如何根据 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 -

示例

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

回到顶部