如何在 R 資料框中合併具有相同值的行?
為了合併 R 資料框中具有相同值的行,我們可以使用 aggregate 函式。
例如,如果我們有一個名為 df 的資料框,其中包含兩個分類列,例如 C1 和 C2,以及一個數值列 Num,那麼我們可以透過對 C1 和 C2 值組合的 Num 中的值求和來合併 df 的行,使用以下命令:
aggregate(Num~.,df,FUN=sum)
示例 1
以下程式碼片段建立了一個示例資料框:
grp1<-sample(LETTERS[1:3],20,replace=TRUE) grp2<-sample(letters[1:3],20,replace=TRUE) Response<-rpois(20,5) df1<-data.frame(grp1,grp2,Response) df1
輸出
建立了以下資料框:
grp1 grp2 Response 1 A b 2 2 A c 2 3 B a 8 4 B c 7 5 C a 7 6 C b 6 7 C b 3 8 B c 6 9 A a 7 10 A c 7 11 C a 11 12 A b 7 13 B c 4 14 A c 2 15 B a 2 16 B c 2 17 A b 2 18 B c 5 19 C a 4 20 C b 2
為了透過查詢 Response 的總和來合併 df1 的行,請將以下程式碼新增到上述程式碼片段中:
grp1<-sample(LETTERS[1:3],20,replace=TRUE) grp2<-sample(letters[1:3],20,replace=TRUE) Response<-rpois(20,5) df1<-data.frame(grp1,grp2,Response) aggregate(Response~.,df1,FUN=sum)
輸出
如果您將以上所有程式碼片段作為一個程式執行,它將生成以下輸出:
grp1 grp2 Response 1 A a 7 2 B a 10 3 C a 22 4 A b 11 5 C b 11 6 A c 11 7 B c 24
示例 2
以下程式碼片段建立了一個示例資料框:
factor1<-sample(c("Male","Female"),20,replace=TRUE)
factor2<-sample(c("I","II","III"),20,replace=TRUE)
Score<-sample(1:50,20)
df2<-data.frame(factor1,factor2,Score)
df2建立了以下資料框:
factor1 factor2 Score 1 Female III 32 2 Male III 18 3 Male III 21 4 Male III 49 5 Male I 38 6 Female III 6 7 Male I 7 8 Female I 44 9 Female III 30 10 Female I 26 11 Male II 43 12 Male III 41 13 Female I 4 14 Female I 33 15 Male I 15 16 Female II 13 17 Female III 19 18 Female III 46 19 Male II 17 20 Female I 31
為了透過查詢 Score 的總和來合併 df2 的行,請將以下程式碼新增到上述程式碼片段中:
factor1<-sample(c("Male","Female"),20,replace=TRUE)
factor2<-sample(c("I","II","III"),20,replace=TRUE)
Score<-sample(1:50,20)
df2<-data.frame(factor1,factor2,Score)
aggregate(Score~.,df2,FUN=sum)輸出
如果您將以上所有程式碼片段作為一個程式執行,它將生成以下輸出:
factor1 factor2 Score 1 Female I 138 2 Male I 60 3 Female II 13 4 Male II 60 5 Female III 133 6 Male III 129
廣告
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP