如何将我的数据框拆分为等长列表
How to split my data frame in equal length lists
我正在使用一个大数据库,我正在尝试在平衡面板中分块平衡面板,以便我可以执行 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
来识别每个 clvs
中的每个 date
(Index
已经在 bb3
中生成了,但是为了练习我我在解释我是怎么做到的)
bb3<- bb3 %>%
group_by(clvs) %>%
mutate(Index = row_number())
问题是不知道怎么拆分:
si<-split.data.frame(bb3,bb3$Index)
再次 si
与我的需要密切相关,它给了我一个包含 551 个余额列表的列表(102 clvs
和一个 date
)。给定 Index
的 19 段,我想划分 bb3
。此列表 (1:19,20:39,40:59,...) 将决定我如何划分数据框
我相信 function
和 lapply
应该有一个简单的方法,但我不能用这个解决方案。
TL:DR 我想将我的数据框分成 19 个块,每个块有 102 clvs
每个块有 29 个周期 date
: a 19 个块的列表,每个块有 2,958 个观察
任何帮助将不胜感激
####编辑####
我通过@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 个连续日期?
你可以做到
B <- split(bb3, 1:6)
因此B
是一个数据框列表,每个框有9367行:
sapply(B, nrow)
#> 0 1 2 3 4 5
#> 9367 9367 9367 9367 9367 9367
每个都包含大致相等数量的所有 clvs
:
sapply(B, function(x) table(x$clvs))
#> 1 2 3 4 5 6
#> 07ACU-115 92 92 92 92 92 91
#> 07APD-230 92 92 92 92 91 92
#> 07BJO-69 92 92 92 91 92 92
#> 07CAE-69 92 92 91 92 92 92
#> 07CES-69 92 91 92 92 92 92
#> 07CHQ-230 91 92 92 92 92 92
#> 07CIP-115 92 92 92 92 92 91
#> 07CME-115 92 92 92 92 91 92
#> 07CNA-69 92 92 92 91 92 92
#> 07CNT-230 92 92 91 92 92 92
#> 07CNZ-161 92 91 92 92 92 92
#> 07COE-115 91 92 92 92 92 92
#> 07CPC-161 92 92 92 92 92 91
#> 07CPD-230 92 92 92 92 91 92
#> 07CPT-230 92 92 92 91 92 92
#> 07CPU-161 92 92 91 92 92 92
#> 07CRO-161 92 91 92 92 92 92
#> 07CSC-230 91 92 92 92 92 92
#> 07CTY-161 92 92 92 92 92 91
#> 07CTY-230 92 92 92 92 91 92
#> 07DRA-69 92 92 92 91 92 92
#> 07EDA-115 92 92 91 92 92 92
#> 07END-69 92 91 92 92 92 92
#> 07ENT-115 91 92 92 92 92 92
#> 07EPC-115 92 92 92 92 92 91
#> 07FCO-69 92 92 92 92 91 92
#> 07FEV-161 92 92 92 91 92 92
#> 07FLO-69 92 92 91 92 92 92
#> 07FMO-115 92 91 92 92 92 92
#> 07FOR-69 91 92 92 92 92 92
#> 07FTA-69 92 92 92 92 92 91
#> 07GER-69 92 92 92 92 91 92
#> 07GLL-115 92 92 92 91 92 92
#> 07GOR-161 92 92 91 92 92 92
#> 07HGO-161 92 91 92 92 92 92
#> 07HMO-69 91 92 92 92 92 92
#> 07HUN-69 92 92 92 92 92 91
#> 07INA-69 92 92 92 92 91 92
#> 07IOP-69 92 92 92 91 92 92
#> 07JAT-115 92 92 91 92 92 92
#> 07JOV-230 92 91 92 92 92 92
#> 07JOY-115 91 92 92 92 92 92
#> 07KCH-161 92 92 92 92 92 91
#> 07LGO-69 92 92 92 92 91 92
#> 07LMS-69 92 92 92 91 92 92
#> 07LOS-115 92 92 91 92 92 92
#> 07MAB-69 92 91 92 92 92 92
#> 07MEP-230 91 92 92 92 92 92
#> 07MEP-69 92 92 92 92 92 91
#> 07MND-115 92 92 92 92 91 92
#> 07MOE-161 92 92 92 91 92 92
#> 07MSN-115 92 92 91 92 92 92
#> 07MXC-69 92 91 92 92 92 92
#> 07MXI-161 91 92 92 92 92 92
#> 07MXI-230 92 92 92 92 92 91
#> 07NEL-69 92 92 92 92 91 92
#> 07NZI-161 92 92 92 91 92 92
#> 07ONG-69 92 92 91 92 92 92
#> 07OZA-230 92 91 92 92 92 92
#> 07PAF-69 91 92 92 92 92 92
#> 07PAP-69 92 92 92 92 92 91
#> 07PID-161 92 92 92 92 91 92
#> 07PID-230 92 92 92 91 92 92
#> 07PJZ-115 92 92 91 92 92 92
#> 07PJZ-230 92 91 92 92 92 92
#> 07PKD-161 91 92 92 92 92 92
#> 07PNM-115 92 92 92 92 92 91
#> 07PNU-115 92 92 92 92 91 92
#> 07POP-115 92 92 92 91 92 92
#> 07RII-69 92 92 91 92 92 92
#> 07RIN-161 92 91 92 92 92 92
#> 07RSI-69 91 92 92 92 92 92
#> 07RUB-69 92 92 92 92 92 91
#> 07RUM-69 92 92 92 92 91 92
#> 07RZC-161 92 92 92 91 92 92
#> 07SAF-115 92 92 91 92 92 92
#> 07SAZ-115 92 91 92 92 92 92
#> 07SED-69 91 92 92 92 92 92
#> 07SHA-115 92 92 92 92 92 91
#> 07SIO-69 92 92 92 92 91 92
#> 07SIS-161 92 92 92 91 92 92
#> 07SMN-115 92 92 91 92 92 92
#> 07SQN-115 92 91 92 92 92 92
#> 07SRY-230 91 92 92 92 92 92
#> 07STB-230 92 92 92 92 92 91
#> 07SVE-115 92 92 92 92 91 92
#> 07TCD-69 92 92 92 91 92 92
#> 07TCT-69 92 92 91 92 92 92
#> 07TEE-69 92 91 92 92 92 92
#> 07TEK-230 91 92 92 92 92 92
#> 07TJD-69 92 92 92 92 92 91
#> 07TJI-69 92 92 92 92 91 92
#> 07TOY-230 92 92 92 91 92 92
#> 07TRI-115 92 92 91 92 92 92
#> 07UND-69 92 91 92 92 92 92
#> 07VAS-69 91 92 92 92 92 92
#> 07VIG-69 92 92 92 92 92 91
#> 07VLP-69 92 92 92 92 91 92
#> 07VPA-230 92 92 92 91 92 92
#> 07VPM-69 92 92 91 92 92 92
#> 07WIS-230 92 91 92 92 92 92
#> 07XCO-230 91 92 92 92 92 92
并且每个包含每个 datetime
:
的 17 个实例
sapply(B, function(x) table(as.character(x$datetime)))
#> 1 2 3 4 5 6
#> 2017-02-28 01:00:00 17 17 17 17 17 17
#> 2017-02-28 02:00:00 17 17 17 17 17 17
#> 2017-02-28 03:00:00 17 17 17 17 17 17
#> 2017-02-28 04:00:00 17 17 17 17 17 17
#> 2017-02-28 05:00:00 17 17 17 17 17 17
#> 2017-02-28 06:00:00 17 17 17 17 17 17
#> 2017-02-28 07:00:00 17 17 17 17 17 17
#> 2017-02-28 08:00:00 17 17 17 17 17 17
#> 2017-02-28 09:00:00 17 17 17 17 17 17
#> 2017-02-28 10:00:00 17 17 17 17 17 17
#> 2017-02-28 11:00:00 17 17 17 17 17 17
#> 2017-02-28 12:00:00 17 17 17 17 17 17
#> 2017-02-28 13:00:00 17 17 17 17 17 17
#> 2017-02-28 14:00:00 17 17 17 17 17 17
#> 2017-02-28 15:00:00 17 17 17 17 17 17
#> 2017-02-28 16:00:00 17 17 17 17 17 17
#> 2017-02-28 17:00:00 17 17 17 17 17 17
#> 2017-02-28 18:00:00 17 17 17 17 17 17
#> 2017-02-28 19:00:00 17 17 17 17 17 17
#> 2017-02-28 20:00:00 17 17 17 17 17 17
#> 2017-02-28 21:00:00 17 17 17 17 17 17
#> 2017-02-28 22:00:00 17 17 17 17 17 17
#> 2017-02-28 23:00:00 17 17 17 17 17 17
#> 2017-03-01 00:00:00 17 17 17 17 17 17
#> 2017-03-01 01:00:00 17 17 17 17 17 17
#> 2017-03-01 02:00:00 17 17 17 17 17 17
#> 2017-03-01 03:00:00 17 17 17 17 17 17
#> 2017-03-01 04:00:00 17 17 17 17 17 17
#> 2017-03-01 05:00:00 17 17 17 17 17 17
#> 2017-03-01 06:00:00 17 17 17 17 17 17
#> 2017-03-01 07:00:00 17 17 17 17 17 17
#> 2017-03-01 08:00:00 17 17 17 17 17 17
#> 2017-03-01 09:00:00 17 17 17 17 17 17
#> 2017-03-01 10:00:00 17 17 17 17 17 17
#> 2017-03-01 11:00:00 17 17 17 17 17 17
#> 2017-03-01 12:00:00 17 17 17 17 17 17
#> 2017-03-01 13:00:00 17 17 17 17 17 17
#> 2017-03-01 14:00:00 17 17 17 17 17 17
#> 2017-03-01 15:00:00 17 17 17 17 17 17
#> 2017-03-01 16:00:00 17 17 17 17 17 17
#> 2017-03-01 17:00:00 17 17 17 17 17 17
#> 2017-03-01 18:00:00 17 17 17 17 17 17
#> 2017-03-01 19:00:00 17 17 17 17 17 17
#> 2017-03-01 20:00:00 17 17 17 17 17 17
#> 2017-03-01 21:00:00 17 17 17 17 17 17
#> 2017-03-01 22:00:00 17 17 17 17 17 17
#> 2017-03-01 23:00:00 17 17 17 17 17 17
#> 2017-03-02 00:00:00 17 17 17 17 17 17
#> 2017-03-02 01:00:00 17 17 17 17 17 17
#> 2017-03-02 02:00:00 17 17 17 17 17 17
#> 2017-03-02 03:00:00 17 17 17 17 17 17
#> 2017-03-02 04:00:00 17 17 17 17 17 17
#> 2017-03-02 05:00:00 17 17 17 17 17 17
#> 2017-03-02 06:00:00 17 17 17 17 17 17
#> 2017-03-02 07:00:00 17 17 17 17 17 17
#> 2017-03-02 08:00:00 17 17 17 17 17 17
#> 2017-03-02 09:00:00 17 17 17 17 17 17
#> 2017-03-02 10:00:00 17 17 17 17 17 17
#> 2017-03-02 11:00:00 17 17 17 17 17 17
#> 2017-03-02 12:00:00 17 17 17 17 17 17
#> 2017-03-02 13:00:00 17 17 17 17 17 17
#> 2017-03-02 14:00:00 17 17 17 17 17 17
#> 2017-03-02 15:00:00 17 17 17 17 17 17
#> 2017-03-02 16:00:00 17 17 17 17 17 17
#> 2017-03-02 17:00:00 17 17 17 17 17 17
#> 2017-03-02 18:00:00 17 17 17 17 17 17
#> 2017-03-02 19:00:00 17 17 17 17 17 17
#> 2017-03-02 20:00:00 17 17 17 17 17 17
#> 2017-03-02 21:00:00 17 17 17 17 17 17
#> 2017-03-02 22:00:00 17 17 17 17 17 17
#> 2017-03-02 23:00:00 17 17 17 17 17 17
#> 2017-03-03 00:00:00 17 17 17 17 17 17
#> 2017-03-03 01:00:00 17 17 17 17 17 17
#> 2017-03-03 02:00:00 17 17 17 17 17 17
#> 2017-03-03 03:00:00 17 17 17 17 17 17
#> 2017-03-03 04:00:00 17 17 17 17 17 17
#> 2017-03-03 05:00:00 17 17 17 17 17 17
#> 2017-03-03 06:00:00 17 17 17 17 17 17
#> 2017-03-03 07:00:00 17 17 17 17 17 17
#> 2017-03-03 08:00:00 17 17 17 17 17 17
#> 2017-03-03 09:00:00 17 17 17 17 17 17
#> 2017-03-03 10:00:00 17 17 17 17 17 17
#> 2017-03-03 11:00:00 17 17 17 17 17 17
#> 2017-03-03 12:00:00 17 17 17 17 17 17
#> 2017-03-03 13:00:00 17 17 17 17 17 17
#> 2017-03-03 14:00:00 17 17 17 17 17 17
#> 2017-03-03 15:00:00 17 17 17 17 17 17
#> 2017-03-03 16:00:00 17 17 17 17 17 17
#> 2017-03-03 17:00:00 17 17 17 17 17 17
#> 2017-03-03 18:00:00 17 17 17 17 17 17
#> 2017-03-03 19:00:00 17 17 17 17 17 17
#> 2017-03-03 20:00:00 17 17 17 17 17 17
#> 2017-03-03 21:00:00 17 17 17 17 17 17
#> 2017-03-03 22:00:00 17 17 17 17 17 17
#> 2017-03-03 23:00:00 17 17 17 17 17 17
#> 2017-03-04 00:00:00 17 17 17 17 17 17
#> 2017-03-04 01:00:00 17 17 17 17 17 17
#> 2017-03-04 02:00:00 17 17 17 17 17 17
#> 2017-03-04 03:00:00 17 17 17 17 17 17
#> 2017-03-04 04:00:00 17 17 17 17 17 17
#> 2017-03-04 05:00:00 17 17 17 17 17 17
#> 2017-03-04 06:00:00 17 17 17 17 17 17
#> 2017-03-04 07:00:00 17 17 17 17 17 17
#> 2017-03-04 08:00:00 17 17 17 17 17 17
#> 2017-03-04 09:00:00 17 17 17 17 17 17
#> 2017-03-04 10:00:00 17 17 17 17 17 17
#> 2017-03-04 11:00:00 17 17 17 17 17 17
#> 2017-03-04 12:00:00 17 17 17 17 17 17
#> 2017-03-04 13:00:00 17 17 17 17 17 17
#> 2017-03-04 14:00:00 17 17 17 17 17 17
#> 2017-03-04 15:00:00 17 17 17 17 17 17
#> 2017-03-04 16:00:00 17 17 17 17 17 17
#> 2017-03-04 17:00:00 17 17 17 17 17 17
#> 2017-03-04 18:00:00 17 17 17 17 17 17
#> 2017-03-04 19:00:00 17 17 17 17 17 17
#> 2017-03-04 20:00:00 17 17 17 17 17 17
#> 2017-03-04 21:00:00 17 17 17 17 17 17
#> 2017-03-04 22:00:00 17 17 17 17 17 17
#> 2017-03-04 23:00:00 17 17 17 17 17 17
#> 2017-03-05 00:00:00 17 17 17 17 17 17
#> 2017-03-05 01:00:00 17 17 17 17 17 17
#> 2017-03-05 02:00:00 17 17 17 17 17 17
#> 2017-03-05 03:00:00 17 17 17 17 17 17
#> 2017-03-05 04:00:00 17 17 17 17 17 17
#> 2017-03-05 05:00:00 17 17 17 17 17 17
#> 2017-03-05 06:00:00 17 17 17 17 17 17
#> 2017-03-05 07:00:00 17 17 17 17 17 17
#> 2017-03-05 08:00:00 17 17 17 17 17 17
#> 2017-03-05 09:00:00 17 17 17 17 17 17
#> 2017-03-05 10:00:00 17 17 17 17 17 17
#> 2017-03-05 11:00:00 17 17 17 17 17 17
#> 2017-03-05 12:00:00 17 17 17 17 17 17
#> 2017-03-05 13:00:00 17 17 17 17 17 17
#> 2017-03-05 14:00:00 17 17 17 17 17 17
#> 2017-03-05 15:00:00 17 17 17 17 17 17
#> 2017-03-05 16:00:00 17 17 17 17 17 17
#> 2017-03-05 17:00:00 17 17 17 17 17 17
#> 2017-03-05 18:00:00 17 17 17 17 17 17
#> 2017-03-05 19:00:00 17 17 17 17 17 17
#> 2017-03-05 20:00:00 17 17 17 17 17 17
#> 2017-03-05 21:00:00 17 17 17 17 17 17
#> 2017-03-05 22:00:00 17 17 17 17 17 17
#> 2017-03-05 23:00:00 17 17 17 17 17 17
#> 2017-03-06 00:00:00 17 17 17 17 17 17
#> 2017-03-06 01:00:00 17 17 17 17 17 17
#> 2017-03-06 02:00:00 17 17 17 17 17 17
#> 2017-03-06 03:00:00 17 17 17 17 17 17
#> 2017-03-06 04:00:00 17 17 17 17 17 17
#> 2017-03-06 05:00:00 17 17 17 17 17 17
#> 2017-03-06 06:00:00 17 17 17 17 17 17
#> 2017-03-06 07:00:00 17 17 17 17 17 17
#> 2017-03-06 08:00:00 17 17 17 17 17 17
#> 2017-03-06 09:00:00 17 17 17 17 17 17
#> 2017-03-06 10:00:00 17 17 17 17 17 17
#> 2017-03-06 11:00:00 17 17 17 17 17 17
#> 2017-03-06 12:00:00 17 17 17 17 17 17
#> 2017-03-06 13:00:00 17 17 17 17 17 17
#> 2017-03-06 14:00:00 17 17 17 17 17 17
#> 2017-03-06 15:00:00 17 17 17 17 17 17
#> 2017-03-06 16:00:00 17 17 17 17 17 17
#> 2017-03-06 17:00:00 17 17 17 17 17 17
#> 2017-03-06 18:00:00 17 17 17 17 17 17
#> 2017-03-06 19:00:00 17 17 17 17 17 17
#> 2017-03-06 20:00:00 17 17 17 17 17 17
#> 2017-03-06 21:00:00 17 17 17 17 17 17
#> 2017-03-06 22:00:00 17 17 17 17 17 17
#> [ reached getOption("max.print") -- omitted 385 rows ]
虽然这看起来很容易,但将平衡面板数据拆分成小的平衡面板非常具有挑战性。
@Allan Cameron 的回答在列表的长度上是正确的,但在内容上却没有。我的面板不平衡,每个 clvs
在同一个块中有 188 或 187,并且 datetime
不是连续的。例如,B[["1"]]
有一个 7:00
、13:00
和 19:00
的序列 clvs
。对于不平衡的面板,我的带有 splm
函数的循环不起作用。
解决方案使用 gl.unequal
:
library(DTK)
f<-gl.unequal(n=6,k=c(92,92,92,92,92,91))
B<-split(bb3,f)
这样我就得到了平衡面板,例如B[["1"]]
head(B3[["1"]])
1 07AC~ 2017~ 1 686. 684. 2.19 0 2017-02~ 2017-02-28 02:00:00
2 07AC~ 2017~ 2 665. 664. 1.79 0 2017-02~ 2017-02-28 03:00:00
3 07AC~ 2017~ 3 393. 392. 1.11 0 2017-02~ 2017-02-28 04:00:00
4 07AC~ 2017~ 4 383. 381. 1.4 0 2017-02~ 2017-02-28 05:00:00
5 07AC~ 2017~ 5 383. 381. 1.41 0 2017-02~ 2017-02-28 06:00:00
6 07AC~ 2017~ 6 389. 388. 1.07 0 2017-02~ 2017-02-28 07:00:00
is.pbalanced(B[["1"]])
TRUE
我正在使用一个大数据库,我正在尝试在平衡面板中分块平衡面板,以便我可以执行 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
来识别每个 clvs
中的每个 date
(Index
已经在 bb3
中生成了,但是为了练习我我在解释我是怎么做到的)
bb3<- bb3 %>%
group_by(clvs) %>%
mutate(Index = row_number())
问题是不知道怎么拆分:
si<-split.data.frame(bb3,bb3$Index)
再次 si
与我的需要密切相关,它给了我一个包含 551 个余额列表的列表(102 clvs
和一个 date
)。给定 Index
的 19 段,我想划分 bb3
。此列表 (1:19,20:39,40:59,...) 将决定我如何划分数据框
我相信 function
和 lapply
应该有一个简单的方法,但我不能用这个解决方案。
TL:DR 我想将我的数据框分成 19 个块,每个块有 102 clvs
每个块有 29 个周期 date
: a 19 个块的列表,每个块有 2,958 个观察
任何帮助将不胜感激
####编辑####
我通过@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 个连续日期?
你可以做到
B <- split(bb3, 1:6)
因此B
是一个数据框列表,每个框有9367行:
sapply(B, nrow)
#> 0 1 2 3 4 5
#> 9367 9367 9367 9367 9367 9367
每个都包含大致相等数量的所有 clvs
:
sapply(B, function(x) table(x$clvs))
#> 1 2 3 4 5 6
#> 07ACU-115 92 92 92 92 92 91
#> 07APD-230 92 92 92 92 91 92
#> 07BJO-69 92 92 92 91 92 92
#> 07CAE-69 92 92 91 92 92 92
#> 07CES-69 92 91 92 92 92 92
#> 07CHQ-230 91 92 92 92 92 92
#> 07CIP-115 92 92 92 92 92 91
#> 07CME-115 92 92 92 92 91 92
#> 07CNA-69 92 92 92 91 92 92
#> 07CNT-230 92 92 91 92 92 92
#> 07CNZ-161 92 91 92 92 92 92
#> 07COE-115 91 92 92 92 92 92
#> 07CPC-161 92 92 92 92 92 91
#> 07CPD-230 92 92 92 92 91 92
#> 07CPT-230 92 92 92 91 92 92
#> 07CPU-161 92 92 91 92 92 92
#> 07CRO-161 92 91 92 92 92 92
#> 07CSC-230 91 92 92 92 92 92
#> 07CTY-161 92 92 92 92 92 91
#> 07CTY-230 92 92 92 92 91 92
#> 07DRA-69 92 92 92 91 92 92
#> 07EDA-115 92 92 91 92 92 92
#> 07END-69 92 91 92 92 92 92
#> 07ENT-115 91 92 92 92 92 92
#> 07EPC-115 92 92 92 92 92 91
#> 07FCO-69 92 92 92 92 91 92
#> 07FEV-161 92 92 92 91 92 92
#> 07FLO-69 92 92 91 92 92 92
#> 07FMO-115 92 91 92 92 92 92
#> 07FOR-69 91 92 92 92 92 92
#> 07FTA-69 92 92 92 92 92 91
#> 07GER-69 92 92 92 92 91 92
#> 07GLL-115 92 92 92 91 92 92
#> 07GOR-161 92 92 91 92 92 92
#> 07HGO-161 92 91 92 92 92 92
#> 07HMO-69 91 92 92 92 92 92
#> 07HUN-69 92 92 92 92 92 91
#> 07INA-69 92 92 92 92 91 92
#> 07IOP-69 92 92 92 91 92 92
#> 07JAT-115 92 92 91 92 92 92
#> 07JOV-230 92 91 92 92 92 92
#> 07JOY-115 91 92 92 92 92 92
#> 07KCH-161 92 92 92 92 92 91
#> 07LGO-69 92 92 92 92 91 92
#> 07LMS-69 92 92 92 91 92 92
#> 07LOS-115 92 92 91 92 92 92
#> 07MAB-69 92 91 92 92 92 92
#> 07MEP-230 91 92 92 92 92 92
#> 07MEP-69 92 92 92 92 92 91
#> 07MND-115 92 92 92 92 91 92
#> 07MOE-161 92 92 92 91 92 92
#> 07MSN-115 92 92 91 92 92 92
#> 07MXC-69 92 91 92 92 92 92
#> 07MXI-161 91 92 92 92 92 92
#> 07MXI-230 92 92 92 92 92 91
#> 07NEL-69 92 92 92 92 91 92
#> 07NZI-161 92 92 92 91 92 92
#> 07ONG-69 92 92 91 92 92 92
#> 07OZA-230 92 91 92 92 92 92
#> 07PAF-69 91 92 92 92 92 92
#> 07PAP-69 92 92 92 92 92 91
#> 07PID-161 92 92 92 92 91 92
#> 07PID-230 92 92 92 91 92 92
#> 07PJZ-115 92 92 91 92 92 92
#> 07PJZ-230 92 91 92 92 92 92
#> 07PKD-161 91 92 92 92 92 92
#> 07PNM-115 92 92 92 92 92 91
#> 07PNU-115 92 92 92 92 91 92
#> 07POP-115 92 92 92 91 92 92
#> 07RII-69 92 92 91 92 92 92
#> 07RIN-161 92 91 92 92 92 92
#> 07RSI-69 91 92 92 92 92 92
#> 07RUB-69 92 92 92 92 92 91
#> 07RUM-69 92 92 92 92 91 92
#> 07RZC-161 92 92 92 91 92 92
#> 07SAF-115 92 92 91 92 92 92
#> 07SAZ-115 92 91 92 92 92 92
#> 07SED-69 91 92 92 92 92 92
#> 07SHA-115 92 92 92 92 92 91
#> 07SIO-69 92 92 92 92 91 92
#> 07SIS-161 92 92 92 91 92 92
#> 07SMN-115 92 92 91 92 92 92
#> 07SQN-115 92 91 92 92 92 92
#> 07SRY-230 91 92 92 92 92 92
#> 07STB-230 92 92 92 92 92 91
#> 07SVE-115 92 92 92 92 91 92
#> 07TCD-69 92 92 92 91 92 92
#> 07TCT-69 92 92 91 92 92 92
#> 07TEE-69 92 91 92 92 92 92
#> 07TEK-230 91 92 92 92 92 92
#> 07TJD-69 92 92 92 92 92 91
#> 07TJI-69 92 92 92 92 91 92
#> 07TOY-230 92 92 92 91 92 92
#> 07TRI-115 92 92 91 92 92 92
#> 07UND-69 92 91 92 92 92 92
#> 07VAS-69 91 92 92 92 92 92
#> 07VIG-69 92 92 92 92 92 91
#> 07VLP-69 92 92 92 92 91 92
#> 07VPA-230 92 92 92 91 92 92
#> 07VPM-69 92 92 91 92 92 92
#> 07WIS-230 92 91 92 92 92 92
#> 07XCO-230 91 92 92 92 92 92
并且每个包含每个 datetime
:
sapply(B, function(x) table(as.character(x$datetime)))
#> 1 2 3 4 5 6
#> 2017-02-28 01:00:00 17 17 17 17 17 17
#> 2017-02-28 02:00:00 17 17 17 17 17 17
#> 2017-02-28 03:00:00 17 17 17 17 17 17
#> 2017-02-28 04:00:00 17 17 17 17 17 17
#> 2017-02-28 05:00:00 17 17 17 17 17 17
#> 2017-02-28 06:00:00 17 17 17 17 17 17
#> 2017-02-28 07:00:00 17 17 17 17 17 17
#> 2017-02-28 08:00:00 17 17 17 17 17 17
#> 2017-02-28 09:00:00 17 17 17 17 17 17
#> 2017-02-28 10:00:00 17 17 17 17 17 17
#> 2017-02-28 11:00:00 17 17 17 17 17 17
#> 2017-02-28 12:00:00 17 17 17 17 17 17
#> 2017-02-28 13:00:00 17 17 17 17 17 17
#> 2017-02-28 14:00:00 17 17 17 17 17 17
#> 2017-02-28 15:00:00 17 17 17 17 17 17
#> 2017-02-28 16:00:00 17 17 17 17 17 17
#> 2017-02-28 17:00:00 17 17 17 17 17 17
#> 2017-02-28 18:00:00 17 17 17 17 17 17
#> 2017-02-28 19:00:00 17 17 17 17 17 17
#> 2017-02-28 20:00:00 17 17 17 17 17 17
#> 2017-02-28 21:00:00 17 17 17 17 17 17
#> 2017-02-28 22:00:00 17 17 17 17 17 17
#> 2017-02-28 23:00:00 17 17 17 17 17 17
#> 2017-03-01 00:00:00 17 17 17 17 17 17
#> 2017-03-01 01:00:00 17 17 17 17 17 17
#> 2017-03-01 02:00:00 17 17 17 17 17 17
#> 2017-03-01 03:00:00 17 17 17 17 17 17
#> 2017-03-01 04:00:00 17 17 17 17 17 17
#> 2017-03-01 05:00:00 17 17 17 17 17 17
#> 2017-03-01 06:00:00 17 17 17 17 17 17
#> 2017-03-01 07:00:00 17 17 17 17 17 17
#> 2017-03-01 08:00:00 17 17 17 17 17 17
#> 2017-03-01 09:00:00 17 17 17 17 17 17
#> 2017-03-01 10:00:00 17 17 17 17 17 17
#> 2017-03-01 11:00:00 17 17 17 17 17 17
#> 2017-03-01 12:00:00 17 17 17 17 17 17
#> 2017-03-01 13:00:00 17 17 17 17 17 17
#> 2017-03-01 14:00:00 17 17 17 17 17 17
#> 2017-03-01 15:00:00 17 17 17 17 17 17
#> 2017-03-01 16:00:00 17 17 17 17 17 17
#> 2017-03-01 17:00:00 17 17 17 17 17 17
#> 2017-03-01 18:00:00 17 17 17 17 17 17
#> 2017-03-01 19:00:00 17 17 17 17 17 17
#> 2017-03-01 20:00:00 17 17 17 17 17 17
#> 2017-03-01 21:00:00 17 17 17 17 17 17
#> 2017-03-01 22:00:00 17 17 17 17 17 17
#> 2017-03-01 23:00:00 17 17 17 17 17 17
#> 2017-03-02 00:00:00 17 17 17 17 17 17
#> 2017-03-02 01:00:00 17 17 17 17 17 17
#> 2017-03-02 02:00:00 17 17 17 17 17 17
#> 2017-03-02 03:00:00 17 17 17 17 17 17
#> 2017-03-02 04:00:00 17 17 17 17 17 17
#> 2017-03-02 05:00:00 17 17 17 17 17 17
#> 2017-03-02 06:00:00 17 17 17 17 17 17
#> 2017-03-02 07:00:00 17 17 17 17 17 17
#> 2017-03-02 08:00:00 17 17 17 17 17 17
#> 2017-03-02 09:00:00 17 17 17 17 17 17
#> 2017-03-02 10:00:00 17 17 17 17 17 17
#> 2017-03-02 11:00:00 17 17 17 17 17 17
#> 2017-03-02 12:00:00 17 17 17 17 17 17
#> 2017-03-02 13:00:00 17 17 17 17 17 17
#> 2017-03-02 14:00:00 17 17 17 17 17 17
#> 2017-03-02 15:00:00 17 17 17 17 17 17
#> 2017-03-02 16:00:00 17 17 17 17 17 17
#> 2017-03-02 17:00:00 17 17 17 17 17 17
#> 2017-03-02 18:00:00 17 17 17 17 17 17
#> 2017-03-02 19:00:00 17 17 17 17 17 17
#> 2017-03-02 20:00:00 17 17 17 17 17 17
#> 2017-03-02 21:00:00 17 17 17 17 17 17
#> 2017-03-02 22:00:00 17 17 17 17 17 17
#> 2017-03-02 23:00:00 17 17 17 17 17 17
#> 2017-03-03 00:00:00 17 17 17 17 17 17
#> 2017-03-03 01:00:00 17 17 17 17 17 17
#> 2017-03-03 02:00:00 17 17 17 17 17 17
#> 2017-03-03 03:00:00 17 17 17 17 17 17
#> 2017-03-03 04:00:00 17 17 17 17 17 17
#> 2017-03-03 05:00:00 17 17 17 17 17 17
#> 2017-03-03 06:00:00 17 17 17 17 17 17
#> 2017-03-03 07:00:00 17 17 17 17 17 17
#> 2017-03-03 08:00:00 17 17 17 17 17 17
#> 2017-03-03 09:00:00 17 17 17 17 17 17
#> 2017-03-03 10:00:00 17 17 17 17 17 17
#> 2017-03-03 11:00:00 17 17 17 17 17 17
#> 2017-03-03 12:00:00 17 17 17 17 17 17
#> 2017-03-03 13:00:00 17 17 17 17 17 17
#> 2017-03-03 14:00:00 17 17 17 17 17 17
#> 2017-03-03 15:00:00 17 17 17 17 17 17
#> 2017-03-03 16:00:00 17 17 17 17 17 17
#> 2017-03-03 17:00:00 17 17 17 17 17 17
#> 2017-03-03 18:00:00 17 17 17 17 17 17
#> 2017-03-03 19:00:00 17 17 17 17 17 17
#> 2017-03-03 20:00:00 17 17 17 17 17 17
#> 2017-03-03 21:00:00 17 17 17 17 17 17
#> 2017-03-03 22:00:00 17 17 17 17 17 17
#> 2017-03-03 23:00:00 17 17 17 17 17 17
#> 2017-03-04 00:00:00 17 17 17 17 17 17
#> 2017-03-04 01:00:00 17 17 17 17 17 17
#> 2017-03-04 02:00:00 17 17 17 17 17 17
#> 2017-03-04 03:00:00 17 17 17 17 17 17
#> 2017-03-04 04:00:00 17 17 17 17 17 17
#> 2017-03-04 05:00:00 17 17 17 17 17 17
#> 2017-03-04 06:00:00 17 17 17 17 17 17
#> 2017-03-04 07:00:00 17 17 17 17 17 17
#> 2017-03-04 08:00:00 17 17 17 17 17 17
#> 2017-03-04 09:00:00 17 17 17 17 17 17
#> 2017-03-04 10:00:00 17 17 17 17 17 17
#> 2017-03-04 11:00:00 17 17 17 17 17 17
#> 2017-03-04 12:00:00 17 17 17 17 17 17
#> 2017-03-04 13:00:00 17 17 17 17 17 17
#> 2017-03-04 14:00:00 17 17 17 17 17 17
#> 2017-03-04 15:00:00 17 17 17 17 17 17
#> 2017-03-04 16:00:00 17 17 17 17 17 17
#> 2017-03-04 17:00:00 17 17 17 17 17 17
#> 2017-03-04 18:00:00 17 17 17 17 17 17
#> 2017-03-04 19:00:00 17 17 17 17 17 17
#> 2017-03-04 20:00:00 17 17 17 17 17 17
#> 2017-03-04 21:00:00 17 17 17 17 17 17
#> 2017-03-04 22:00:00 17 17 17 17 17 17
#> 2017-03-04 23:00:00 17 17 17 17 17 17
#> 2017-03-05 00:00:00 17 17 17 17 17 17
#> 2017-03-05 01:00:00 17 17 17 17 17 17
#> 2017-03-05 02:00:00 17 17 17 17 17 17
#> 2017-03-05 03:00:00 17 17 17 17 17 17
#> 2017-03-05 04:00:00 17 17 17 17 17 17
#> 2017-03-05 05:00:00 17 17 17 17 17 17
#> 2017-03-05 06:00:00 17 17 17 17 17 17
#> 2017-03-05 07:00:00 17 17 17 17 17 17
#> 2017-03-05 08:00:00 17 17 17 17 17 17
#> 2017-03-05 09:00:00 17 17 17 17 17 17
#> 2017-03-05 10:00:00 17 17 17 17 17 17
#> 2017-03-05 11:00:00 17 17 17 17 17 17
#> 2017-03-05 12:00:00 17 17 17 17 17 17
#> 2017-03-05 13:00:00 17 17 17 17 17 17
#> 2017-03-05 14:00:00 17 17 17 17 17 17
#> 2017-03-05 15:00:00 17 17 17 17 17 17
#> 2017-03-05 16:00:00 17 17 17 17 17 17
#> 2017-03-05 17:00:00 17 17 17 17 17 17
#> 2017-03-05 18:00:00 17 17 17 17 17 17
#> 2017-03-05 19:00:00 17 17 17 17 17 17
#> 2017-03-05 20:00:00 17 17 17 17 17 17
#> 2017-03-05 21:00:00 17 17 17 17 17 17
#> 2017-03-05 22:00:00 17 17 17 17 17 17
#> 2017-03-05 23:00:00 17 17 17 17 17 17
#> 2017-03-06 00:00:00 17 17 17 17 17 17
#> 2017-03-06 01:00:00 17 17 17 17 17 17
#> 2017-03-06 02:00:00 17 17 17 17 17 17
#> 2017-03-06 03:00:00 17 17 17 17 17 17
#> 2017-03-06 04:00:00 17 17 17 17 17 17
#> 2017-03-06 05:00:00 17 17 17 17 17 17
#> 2017-03-06 06:00:00 17 17 17 17 17 17
#> 2017-03-06 07:00:00 17 17 17 17 17 17
#> 2017-03-06 08:00:00 17 17 17 17 17 17
#> 2017-03-06 09:00:00 17 17 17 17 17 17
#> 2017-03-06 10:00:00 17 17 17 17 17 17
#> 2017-03-06 11:00:00 17 17 17 17 17 17
#> 2017-03-06 12:00:00 17 17 17 17 17 17
#> 2017-03-06 13:00:00 17 17 17 17 17 17
#> 2017-03-06 14:00:00 17 17 17 17 17 17
#> 2017-03-06 15:00:00 17 17 17 17 17 17
#> 2017-03-06 16:00:00 17 17 17 17 17 17
#> 2017-03-06 17:00:00 17 17 17 17 17 17
#> 2017-03-06 18:00:00 17 17 17 17 17 17
#> 2017-03-06 19:00:00 17 17 17 17 17 17
#> 2017-03-06 20:00:00 17 17 17 17 17 17
#> 2017-03-06 21:00:00 17 17 17 17 17 17
#> 2017-03-06 22:00:00 17 17 17 17 17 17
#> [ reached getOption("max.print") -- omitted 385 rows ]
虽然这看起来很容易,但将平衡面板数据拆分成小的平衡面板非常具有挑战性。
@Allan Cameron 的回答在列表的长度上是正确的,但在内容上却没有。我的面板不平衡,每个 clvs
在同一个块中有 188 或 187,并且 datetime
不是连续的。例如,B[["1"]]
有一个 7:00
、13:00
和 19:00
的序列 clvs
。对于不平衡的面板,我的带有 splm
函数的循环不起作用。
解决方案使用 gl.unequal
:
library(DTK)
f<-gl.unequal(n=6,k=c(92,92,92,92,92,91))
B<-split(bb3,f)
这样我就得到了平衡面板,例如B[["1"]]
head(B3[["1"]])
1 07AC~ 2017~ 1 686. 684. 2.19 0 2017-02~ 2017-02-28 02:00:00
2 07AC~ 2017~ 2 665. 664. 1.79 0 2017-02~ 2017-02-28 03:00:00
3 07AC~ 2017~ 3 393. 392. 1.11 0 2017-02~ 2017-02-28 04:00:00
4 07AC~ 2017~ 4 383. 381. 1.4 0 2017-02~ 2017-02-28 05:00:00
5 07AC~ 2017~ 5 383. 381. 1.41 0 2017-02~ 2017-02-28 06:00:00
6 07AC~ 2017~ 6 389. 388. 1.07 0 2017-02~ 2017-02-28 07:00:00
is.pbalanced(B[["1"]])
TRUE