绑定两个不同长度的 data.table
Binding two data.table with different length
我有一个 data.table 结构类似于
library(data.table) #load package
a <- as.data.table(matrix(1,10,10))
b <- as.data.table(matrix(2,2,2))
如您所见,它们具有不同的维度。
我想把这两个 data.table 放在一起。
结果应该是,
前十行/前十列是 "a"
第 11 和第 12 行/第 1 和第 2 列是 "b"
我需要这个的原因是因为我有一个数据集(a) 和一个脚注(b)。
我想合并它并将其导出为 xlsx 文件。所以在数据集下面是脚注。
我尝试通过 rbind cbind 这样做,但这要求我匹配长度,如果我这样做,"b" 每次重复 5 次以使长度与 "a" 匹配。
> y <- as.data.table(matrix(1,10,10))
> u <- as.data.table(matrix(2,2,2))
> merge(y, u, all = TRUE)
V1 V2 V3 V4 V5 V6 V7 V8 V9 V10
1: 1 1 1 1 1 1 1 1 1 1
2: 1 1 1 1 1 1 1 1 1 1
3: 1 1 1 1 1 1 1 1 1 1
4: 1 1 1 1 1 1 1 1 1 1
5: 1 1 1 1 1 1 1 1 1 1
6: 1 1 1 1 1 1 1 1 1 1
7: 1 1 1 1 1 1 1 1 1 1
8: 1 1 1 1 1 1 1 1 1 1
9: 1 1 1 1 1 1 1 1 1 1
10: 1 1 1 1 1 1 1 1 1 1
11: 2 2 NA NA NA NA NA NA NA NA
12: 2 2 NA NA NA NA NA NA NA NA
使用 plyr
包:
library(plyr)
l1<-list(a,b)
ldply(l1,data.table)
导致:
V1 V2 V3 V4 V5 V6 V7 V8 V9 V10
1 1 1 1 1 1 1 1 1 1 1
2 1 1 1 1 1 1 1 1 1 1
3 1 1 1 1 1 1 1 1 1 1
4 1 1 1 1 1 1 1 1 1 1
5 1 1 1 1 1 1 1 1 1 1
6 1 1 1 1 1 1 1 1 1 1
7 1 1 1 1 1 1 1 1 1 1
8 1 1 1 1 1 1 1 1 1 1
9 1 1 1 1 1 1 1 1 1 1
10 1 1 1 1 1 1 1 1 1 1
11 2 2 NA NA NA NA NA NA NA NA
12 2 2 NA NA NA NA NA NA NA NA
我有一个 data.table 结构类似于
library(data.table) #load package
a <- as.data.table(matrix(1,10,10))
b <- as.data.table(matrix(2,2,2))
如您所见,它们具有不同的维度。 我想把这两个 data.table 放在一起。 结果应该是, 前十行/前十列是 "a" 第 11 和第 12 行/第 1 和第 2 列是 "b"
我需要这个的原因是因为我有一个数据集(a) 和一个脚注(b)。 我想合并它并将其导出为 xlsx 文件。所以在数据集下面是脚注。
我尝试通过 rbind cbind 这样做,但这要求我匹配长度,如果我这样做,"b" 每次重复 5 次以使长度与 "a" 匹配。
> y <- as.data.table(matrix(1,10,10))
> u <- as.data.table(matrix(2,2,2))
> merge(y, u, all = TRUE)
V1 V2 V3 V4 V5 V6 V7 V8 V9 V10
1: 1 1 1 1 1 1 1 1 1 1
2: 1 1 1 1 1 1 1 1 1 1
3: 1 1 1 1 1 1 1 1 1 1
4: 1 1 1 1 1 1 1 1 1 1
5: 1 1 1 1 1 1 1 1 1 1
6: 1 1 1 1 1 1 1 1 1 1
7: 1 1 1 1 1 1 1 1 1 1
8: 1 1 1 1 1 1 1 1 1 1
9: 1 1 1 1 1 1 1 1 1 1
10: 1 1 1 1 1 1 1 1 1 1
11: 2 2 NA NA NA NA NA NA NA NA
12: 2 2 NA NA NA NA NA NA NA NA
使用 plyr
包:
library(plyr)
l1<-list(a,b)
ldply(l1,data.table)
导致:
V1 V2 V3 V4 V5 V6 V7 V8 V9 V10
1 1 1 1 1 1 1 1 1 1 1
2 1 1 1 1 1 1 1 1 1 1
3 1 1 1 1 1 1 1 1 1 1
4 1 1 1 1 1 1 1 1 1 1
5 1 1 1 1 1 1 1 1 1 1
6 1 1 1 1 1 1 1 1 1 1
7 1 1 1 1 1 1 1 1 1 1
8 1 1 1 1 1 1 1 1 1 1
9 1 1 1 1 1 1 1 1 1 1
10 1 1 1 1 1 1 1 1 1 1
11 2 2 NA NA NA NA NA NA NA NA
12 2 2 NA NA NA NA NA NA NA NA