问题描述
我正在使用大型数据库,并且试图在平衡面板中对平衡面板进行分块,以便执行plm
循环回归。
我一直在尝试划分数据帧bb3
(余额分组),但是我无法获得想要的东西,这是我的驱动器中的样本数据bb3
作为.RData。
首次尝试
遵循此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
中的每个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次观察
任何帮助将不胜感激
#### 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 (将#修改为@)