如何在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
广告