如何在R資料框中根據分類列值劃分數值列的行值?
如果我們有一個包含兩個或多個類別的分類列和一個數值列,那麼我們可能希望將一個類別數值與其他類別數值相除。這可以使用除號“/”來完成,但我們需要使用值的正確子集。
示例
考慮下面的資料框:
x1<-rep(LETTERS[1:2],10) y1<-rpois(20,5) df1<-data.frame(x1,y1) df1
輸出
x1 y1 1 A 8 2 B 9 3 A 5 4 B 6 5 A 6 6 B 4 7 A 8 8 B 3 9 A 4 10 B 6 11 A 6 12 B 11 13 A 4 14 B 6 15 A 4 16 B 5 17 A 5 18 B 7 19 A 10 20 B 1
將df1中B的y1除以A:
示例
df1$y1[which(df1$x1=="B")]/df1$y1[which(df1$x1=="A")]
輸出
[1] 1.1250000 1.2000000 0.6666667 0.3750000 1.5000000 1.8333333 1.5000000 [8] 1.2500000 1.4000000 0.1000000
示例
x2<-rep(c("India","USA","China","Turkey"),5)
y2<-sample(1:9,20,replace=TRUE)
df2<-data.frame(x2,y2)
df2輸出
x2 y2 1 India 9 2 USA 5 3 China 7 4 Turkey 2 5 India 1 6 USA 9 7 China 7 8 Turkey 1 9 India 8 10 USA 1 11 China 7 12 Turkey 9 13 India 1 14 USA 3 15 China 8 16 Turkey 2 17 India 7 18 USA 1 19 China 5 20 Turkey 4
將df2中印度的y2除以美國的y2:
示例
df2$y2[which(df2$x2=="India")]/df2$y2[which(df2$x2=="USA")]
輸出
[1] 1.8000000 0.1111111 8.0000000 0.3333333 7.0000000
將df2中印度的y2除以土耳其的y2:
示例
df2$y2[which(df2$x2=="India")]/df2$y2[which(df2$x2=="Turkey")]
輸出
[1] 4.5000000 1.0000000 0.8888889 0.5000000 1.7500000
將df2中土耳其的y2除以中國的y2:
示例
df2$y2[which(df2$x2=="Turkey")]/df2$y2[which(df2$x2=="China")]
輸出
[1] 0.2857143 0.1428571 1.2857143 0.2500000 0.8000000
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP