如何在 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
广告
数据结构
网络
关系数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP