如何在R数据框中连接列值并创建新列?


有时我们想组合两列的列值来创建一个新列。这主要用于我们有一个唯一列,该列可以与数值列或任何其他类型的列组合。此外,我们还可以通过使用不同的字符分隔要创建的列值来实现此目的。这可以使用apply函数完成。

示例

考虑以下数据框:

 在线演示

> ID<-1:20
> Country<-
sample(c("Russia","USA","China","Canada","UK","India","Nepal"),20,replace=TRUE)
> df1<-data.frame(ID,Country)
> df1

输出

 ID Country
1 1 UK
2 2 UK
3 3 India
4 4 USA
5 5 USA
6 6 UK
7 7 Nepal
8 8 Russia
9 9 Nepal
10 10 China
11 11 UK
12 12 Nepal
13 13 Canada
14 14 USA
15 15 Russia
16 16 UK
17 17 China
18 18 USA
19 19 China
20 20 Russia

创建ID和国家的新列:

> df1$ID_with_Country<-apply(df1,1,paste,collapse="")
> df1

输出

 ID Country ID_with_Country
1 1    UK       1UK
2 2    UK       2UK
3 3   India    3India
4 4    USA     4USA
5 5   USA       5USA
6 6    UK       6UK
7 7    Nepal  7Nepal
8 8   Russia  8Russia
9 9   Nepal    9Nepal
10 10 China    10China
11 11  UK       11UK
12 12 Nepal    12Nepal
13 13 Canada 13Canada
14 14  USA    14USA
15 15 Russia    15Russia
16 16  UK       16UK
17 17 China    17China
18 18 USA       18USA
19 19 China    19China
20 20 Russia    20Russia

让我们来看另一个例子:

示例

 在线演示

> Class<-LETTERS[1:20]
> Rank<-sample(1:10,20,replace=TRUE)
> df2<-data.frame(Class,Rank)
> df2

输出

 Class Rank
1 A    2
2 B    4
3 C    4
4 D    6
5 E    7
6 F    10
7 G    10
8 H    5
9 I    9
10 J   6
11 K   1
12 L    8
13 M    10
14 N    7
15 O    5
16 P    7
17 Q    6
18 R    1
19 S    10
20 T    3


> df2$Class_Rank<-apply(df2,1,paste,collapse="_")
> df2

输出

 Class Rank Class_Rank
1    A 2       A_ 2
2    B 4       B_ 4
3    C 4       C_ 4
4    D 6       D_ 6
5    E 7       E_ 7
6    F 10      F_10
7    G 10       G_10
8    H 5       H_ 5
9    I 9       I_ 9
10    J 6       J_ 6
11    K 1       K_ 1
12    L 8       L_ 8
13    M 10       M_10
14    N 7       N_ 7
15    O 5       O_ 5
16    P 7       P_ 7
17    Q 6       Q_ 6
18    R 1       R_ 1
19    S 10       S_10
20    T 3       T_ 3

更新于:2020年9月4日

862 次浏览

开启您的职业生涯

完成课程获得认证

开始学习
广告