如何在R中合并data.table对象的两列?

data.table对象与数据帧几乎相同。要合并data.table对象的两列,我们可以使用paste0函数。例如,如果我们有一个定义为DT的数据框,其中包含名为x和y的两列,则可以使用以下命令将它们组合。

DT[,xy:=paste0(x,y)]

示例

加载data.table包。

> library(data.table)

考虑下面的data.table对象。

示例

> x<-1:20
> y<-letters[1:20]
> dt1<-data.table(x,y)
> dt1

输出结果

x y
1: 1 a
2: 2 b
3: 3 c
4: 4 d
5: 5 e
6: 6 f
7: 7 g
8: 8 h
9: 9 i
10: 10 j
11: 11 k
12: 12 l
13: 13 m
14: 14 n
15: 15 o
16: 16 p
17: 17 q
18: 18 r
19: 19 s
20: 20 t

组合列x和y。

示例

> dt1[,xy:=paste0(x,y)]
> dt1

输出结果

x y xy
1: 1 a 1a
2: 2 b 2b
3: 3 c 3c
4: 4 d 4d
5: 5 e 5e
6: 6 f 6f
7: 7 g 7g
8: 8 h 8h
9: 9 i 9i
10: 10 j 10j
11: 11 k 11k
12: 12 l 12l
13: 13 m 13m
14: 14 n 14n
15: 15 o 15o
16: 16 p 16p
17: 17 q 17q
18: 18 r 18r
19: 19 s 19s
20: 20 t 20t

让我们看另一个例子。

示例

> Group<-sample(c("G1","G2","G3","G4"),20,replace=TRUE)
> Class<-sample(c("I","II","III"),20,replace=TRUE)
> dt2<-data.table(Group,Class)
> dt2

输出结果

Group Class
1: G3 I
2: G1 II
3: G3 II
4: G4 I
5: G1 I
6: G3 II
7: G1 III
8: G3 I
9: G2 III
10: G3 II
11: G3 I
12: G2 II
13: G2 II
14: G3 III
15: G4 III
16: G4 I
17: G2 II
18: G4 II
19: G1 III
20: G4 II

组合列组和类。

示例

> dt2[,GC:=paste0(Group,Class)]
> dt2

输出结果

Group Class GC
1: G3 I G3I
2: G1 II G1II
3: G3 II G3II
4: G4 I G4I
5: G1 I G1I
6: G3 II G3II
7: G1 III G1III
8: G3 I G3I
9: G2 III G2III
10: G3 II G3II
11: G3 I G3I
12: G2 II G2II
13: G2 II G2II
14: G3 III G3III
15: G4 III G4III
16: G4 I G4I
17: G2 II G2II
18: G4 II G4II
19: G1 III G1III
20: G4 II G4II