Я работаю с большой базой данных и пытаюсь разделить панель баланса на сбалансированные панели, чтобы выполнить регрессию цикла plm
.
Я пытался разделить свой фрейм данных bb3
(группировка баланса), но мне не удалось получить то, что я хочу, это мои образцы данных bb3
на моем диске в виде .RData
Первая попытка
После этого вопрос Я пытался использовать split.default
:
n<-6
f<-gl(n,nrow(bb3) / n )
B<-split.default(bb3, f)
B
близко к тому, что я хочу, но только для моего первого списка B[["1"]]
остальные 5 списков пусты, и я получаю следующую ошибку:
Warning message:
In split.default(bb3, f) : data length is not a multiple of split variable
TL:DR Я хочу создать список, разделенный на 6 фрагментов, каждый из которых содержит 102 clvs
с последовательными date
. Даже если они не сбалансированы, если они идут последовательно, я могу сбалансировать их с помощью make.pbalanced
. Это будет моим идеальным решением
Вторая попытка
Я сгенерировал Index
для идентификации каждого date
из каждого clvs
(Index
уже сгенерировано в bb3
, но ради упражнения я объясню, как я это сделал)
bb3<- bb3 %>%
group_by(clvs) %>%
mutate(Index = row_number())
Проблема в том, что я не знаю, как его разделить:
si<-split.data.frame(bb3,bb3$Index)
Опять же, si
близко относится к тому, что мне нужно, он дает мне список из 551 балансового списка (102 clvs
и один date
). Я хочу разделить bb3
на 19 сегментов Index
. Этот список (1:19,20:39,40:59,...) определит, как я разделю свой фрейм данных
Я уверен, что должен быть простой способ с function
и lapply
, но я не могу найти это решение.
TL:DR Я хочу разделить свой фрейм данных на 19 фрагментов, каждый фрагмент со 102 clvs
каждый с 29 периодами date
: список из 19 фрагментов с 2958 наблюдениями в каждом
Любая помощь будет высоко ценится
####РЕДАКТИРОВАТЬ####
Решение, которое я получил от @Allan Cameron, сократило мою базу данных до нужного мне размера, но оно не работает как панель баланса, потому что оно не сокращает последовательно мои datetime
B <- split(bb3, 1:6)
head(B[["6"]])
clvs fecha hora pml pml_ene pml_per pml_cng datetime date
<fct> <chr> <chr> <dbl> <dbl> <dbl> <dbl> <fct> <dttm>
1 07AC~ 2017~ 6 389. 388. 1.07 0 2017-02~ 2017-02-28 07:00:00
2 07AC~ 2017~ 12 677. 674. 3.25 0 2017-02~ 2017-02-28 13:00:00
3 07AC~ 2017~ 18 667. 664. 3.15 0 2017-02~ 2017-02-28 19:00:00
4 07AC~ 2017~ 24 666. 664. 2.44 0 2017-03~ 2017-03-01 01:00:00
5 07AC~ 2017~ 6 664. 662. 2.05 0 2017-03~ 2017-03-01 07:00:00
6 07AC~ 2017~ 12 434. 431. 2.97 0 2017-03~ 2017-03-01 13:00:00
tail(B[["6"]])
clvs fecha hora pml pml_ene pml_per pml_cng datetime date
<fct> <chr> <chr> <dbl> <dbl> <dbl> <dbl> <fct> <dttm>
1 07XC~ 2017~ 18 430. 443. -13.6 0 2017-03~ 2017-03-21 19:00:00
2 07XC~ 2017~ 24 418. 426. -8.41 0 2017-03~ 2017-03-22 01:00:00
3 07XC~ 2017~ 6 442. 444. -2.15 0 2017-03~ 2017-03-22 07:00:00
4 07XC~ 2017~ 12 451. 464. -12.4 0 2017-03~ 2017-03-22 13:00:00
5 07XC~ 2017~ 18 450. 461. -11.2 0 2017-03~ 2017-03-22 19:00:00
6 07XC~ 2017~ 24 452. 467. -15 0 2017-03~ 2017-03-23 01:00:00
Так что я до сих пор не могу ни сбалансировать свою панель, ни использовать ее с plm
Как я могу разбить его на 6 с последовательными датами?
split
работает, если вы используетеsplit
, а неsplit.default
? - person Allan Cameron   schedule 09.10.2020split
, он не дает мне сообщенияWarning
, но в каждом списке есть только 17clvs
, и мне нужно 102clvs
в каждом спискеB[[i]]
- person Lilia   schedule 09.10.2020clvs
в первом списке, затем следующие 92 часа во втором и в хронологическом порядке , есть способ? - person Lilia   schedule 11.10.2020