如何根据 R 数据框中的分类列值划分数值列的行值?
如果我们有一个具有两个或多个类别的分类列和一个数值列,那么我们可能希望将一个类别数值与其他类别数值相除。这可以通过使用除号 / 来完成,但我们需要使用值的正确子集。
示例
考虑以下数据框 -
x1<-rep(LETTERS[1:2],10)输出结果y1<-rpois(20,5)
df1<-data.frame(x1,y1)
df1
x1 y11 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 y21 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 -
示例
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 除以土耳其 -
示例
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 除以中国 -
示例
df2$y2[which(df2$x2=="Turkey")]/df2$y2[which(df2$x2=="China")]输出结果
[1] 0.2857143 0.1428571 1.2857143 0.2500000 0.8000000
以上是 如何根据 R 数据框中的分类列值划分数值列的行值? 的全部内容, 来源链接: utcz.com/z/331890.html