如何在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 次瀏覽

開啟您的職業生涯

完成課程獲得認證

開始學習
廣告