如何将数据帧分成等长列表

问题描述

我正在使用大型数据库,并且试图在平衡面板中对平衡面板进行分块,以便执行plm循环回归。

我一直在尝试划分数据帧bb3(余额分组),但是我无法获得想要的东西,这是我的驱动器中的样本数据bb3作为.RData。

bb3

首次尝试

遵循此question之后,我尝试使用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中的每个clvsIndex已经在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,...)将确定我如何划分数据帧

我相信functionlapply应该有一种简单的方法,但是我无法提供这种解决方案。

TL:DR 我想将数据帧分为19个块,每个块有102个clvs,每个块有29个周期date:每个19个块的列表进行了2958次观察

任何帮助将不胜感激

#### EDIT ####

@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个?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)