如何根据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小于4时找到x1和x2的比率,否则返回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小于5时找到y1和y2的比率,否则返回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