R 如何在等长列表中拆分数据帧
我正在使用一个大数据库,我正在尝试将一个平衡面板分割成平衡面板,以便执行R 如何在等长列表中拆分数据帧,r,dataframe,split,balance,R,Dataframe,Split,Balance,我正在使用一个大数据库,我正在尝试将一个平衡面板分割成平衡面板,以便执行plm循环回归 我一直在尝试分割我的数据帧bb3(平衡分组),但我无法获得我想要的,这是我驱动器中作为.RData的样本数据bb3 第一次尝试 在此之后,我尝试使用split.default: n<-6 f<-gl(n,nrow(bb3) / n ) B<-split.default(bb3, f) TL:DR我想生成一个分为6个块的列表,每个块都有102个clv和连续的date。即使它们不平衡,如果它
plm
循环回归
我一直在尝试分割我的数据帧bb3
(平衡分组),但我无法获得我想要的,这是我驱动器中作为.RData的样本数据bb3
第一次尝试
在此之后,我尝试使用split.default
:
n<-6
f<-gl(n,nrow(bb3) / n )
B<-split.default(bb3, f)
TL:DR我想生成一个分为6个块的列表,每个块都有102个clv
和连续的date
。即使它们不平衡,如果它们是连续的,我也可以用make.pbalanced
来平衡它们。这将是我理想的解决方案
第二次尝试
我生成了索引
以识别每个CLV
的每个日期
(索引
已在bb3
中生成,但为了便于练习,我正在解释我是如何生成的)
因此,我仍然无法平衡面板,也无法将其与plm
我如何将它分为6个连续的日期?你可以这样做
B012345
#> 9367 9367 9367 9367 9367 9367
并且每个都包含大致相同数量的所有CLV
:
sapply(B,函数(x)表(x$clvs))
#> 1 2 3 4 5 6
#>07ACU-115 92 91
#>07APD-230 92 92
#>07BJO-69 92 92
#>07CAE-69 92
#>07CES-69 92
#>07CHQ-230 91 92
#>07CIP-115 92 91
#>07CME-115 92 92
#>07CNA-69 92 92
#>07CNT-230 92 92
#>07CNZ-161 92 91 92
#>07COE-115 91 92
#>07CPC-161 92 91
#>07CPD-230 92 92
#>07CPT-230 92 92
#>07CPU-161 92 91 92
#>07CRO-161 92 91 92
#>07CSC-230 91 92
#>07CTY-161 92 91
#>07CTY-230 92 92
#>07DRA-69 92 92
#>07EDA-115 92 91 92
#>07END-69 92 92
#>07ENT-115 91 92
#>07EPC-115 92 91
#>07FCO-69 92
#>07FEV-16192
#>07FLO-69 92
#>07FMO-115 92
#>07FOR-69 91 92 92
#>07FTA-69 92 91
#>07GER-69 92 92 91 92
#>07GLL-115 92 92
#>07GOR-161 92 91 92
#>07HGO-161 92 91 92
#>07HMO-69 91 92
#>07HUN-69 92 91
#>07INA-69 92 92 92
#>07IOP-69 92 92
#>07JAT-115 92 92
#>07JOV-230 92 92
#>07JOY-115 91 92
#>07KCH-161 92 91
#>07LGO-69 92 92
#>07LMS-69 92
#>07LOS-115 92 91 92
#>07MAB-69 92
#>07MEP-230 91 92
#>07MEP-69 92 91
#>07MND-115 92 92
#>07MOE-161 92 92
#>07MSN-115 92 92
#>07MXC-69 92
#>07MXI-161 91 92
#>07MXI-230 92 91
#>07NEL-69 92 92 92
#>07NZI-161 92 92
#>07ONG-69 92 91 92
#>07OZA-230 92 92
#>07PAF-69 91 92
#>07PAP-69 92 91
#>07PID-161 92 92
#>07PID-230 92 92 92
#>07PJZ-115 92 92
#>07PJZ-230 92 92
#>07PKD-161 91 92
#>07PNM-115 92 91
#>07PNU-115 92 92
#>07POP-115 92 91 92
#>07RII-69 92 92
#>07RIN-161 92 91 92
#>07RSI-69 91 92
#>07RUB-69 92 91
#>07RUM-69 92 92 91 92
#>07RZC-16192
#>07SAF-115 92 92
#>07SAZ-115 92 92
#>07SED-69 91 92
#>07SHA-115 92 91
#>07SIO-69 92 92
#>07SIS-16192 92
#>07SMN-115 92 92
#>07SQN-115 92 92
#>07SRY-230 91 92
#>07STB-230 92 91
#>07SVE-115 92 92
#>07TCD-69 92 92
#>07TCT-69 92
#>07TEE-69 92 91 92
#>07TEK-230 91 92
#>07TJD-69 92 91
#>07TJI-69 92 92
#>07TOY-230 92 91 92
#>07TRI-115 92 91 92
#>07UND-69 92 91 92
#>07VAS-69 91 92
#>07VIG-69 92 91
#>07VLP-69 92
#>07VPA-230 92 91 92
#>07VPM-69 92
#>07WIS-230 92 92
#>07XCO-230 91 92
每个包含每个datetime
的17个实例:
sapply(B,函数(x)表(如.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
#>
Warning message:
In split.default(bb3, f) : data length is not a multiple of split variable
bb3<- bb3 %>%
group_by(clvs) %>%
mutate(Index = row_number())
si<-split.data.frame(bb3,bb3$Index)
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
library(DTK)
f<-gl.unequal(n=6,k=c(92,92,92,92,92,91))
B<-split(bb3,f)
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