如何连接列值并在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和Country列-
> 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