如何在 R 中根据条件创建两个列的比率列?


要根据 R 数据框中的条件创建两列比率的新列,我们可以使用 ifelse 函数结合除号。

例如,如果我们有一个名为 df 的数据框,其中包含两列 X 和 Y,并且我们想要根据 X 大于 5 的条件创建 X 和 Y 比率的新列,则可以使用以下命令:

df$Ratio_X_Y<-with(df,ifelse(X>5,X/Y,NA))

示例 1

以下代码片段创建了一个示例数据框:

x1<-rpois(20,2)
x2<-rpois(20,2)
df1<-data.frame(x1,x2)
df1

输出

创建了以下数据框:

   x1 x2
1  0  0
2  2  6
3  3  1
4  3  0
5  4  2
6  2  1
7  3  2
8  3  3
9  2  0
10 3  3
11 0  5
12 2  1
13 4  1
14 2  1
15 4  0
16 1  2
17 1  2
18 3  2
19 6  4
20 1  0

为了找到 x1 和 x2 的比率(如果 x1 小于 4 则返回 NA,否则返回比率),请将以下代码添加到上述代码片段中:

df1$Ratio_x1_x2<-with(df1,ifelse(x1<4,x1/x2,NA))
df1

输出

如果您将以上所有代码片段作为单个程序执行,它将生成以下输出:

  x1  x2  Ratio_x1_x2
1  0  0         NaN
2  2  6   0.3333333
3  3  1   3.0000000
4  3  0         Inf
5  4  2          NA
6  2  1   2.0000000
7  3  2   1.5000000
8  3  3   1.0000000
9  2  0         Inf
10 3  3   1.0000000
11 0  5   0.0000000
12 2  1   2.0000000
13 4  1          NA
14 2  1   2.0000000
15 4  0          NA
16 1  2   0.5000000
17 1  2   0.5000000
18 3  2   1.5000000
19 6  4          NA
20 1  0         Inf

示例 2

以下代码片段创建了一个示例数据框:

y1<-sample(0:9,20,replace=TRUE)
y2<-sample(0:9,20,replace=TRUE)
df2<-data.frame(y1,y2)
df2

输出

创建了以下数据框:

   y1 y2
1  6  7
2  2  2
3  9  1
4  2  2
5  0  0
6  6  1
7  5  1
8  3  7
9  4  9
10 6  3
11 2  8
12 1  6
13 7  7
14 3  2
15 5  5
16 9  5
17 6  7
18 5  0
19 0  1
20 5  4

为了找到 y1 和 y2 的比率(如果 y1 小于 5 则返回 NA,否则返回比率),请将以下代码添加到上述代码片段中:

df2$Ratio_y1_y2<-with(df2,ifelse(y1<5,y1/y2,NA))
df2

输出

如果您将以上所有代码片段作为单个程序执行,它将生成以下输出:

   y1 y2 Ratio_y1_y2
1  6  7         NA
2  2  2  1.0000000
3  9  1         NA
4  2  2  1.0000000
5  0  0        NaN
6  6  1         NA
7  5  1         NA
8  3  7  0.4285714
9  4  9  0.4444444
10 6  3         NA
11 2  8  0.2500000
12 1  6  0.1666667
13 7  7         NA
14 3  2  1.5000000
15 5  5         NA
16 9  5         NA
17 6  7         NA
18 5  0         NA
19 0  1  0.0000000
20 5  4         NA

更新于: 2021年11月2日

609 次浏览

开启你的 职业生涯

通过完成课程获得认证

立即开始
广告

© . All rights reserved.