R 如何在引用其他多列的值时解析列?
我有一个示例数据框,其中列a到d是参考列,列R 如何在引用其他多列的值时解析列?,r,function,loops,dplyr,R,Function,Loops,Dplyr,我有一个示例数据框,其中列a到d是参考列,列x1-3需要解析并插入新值 以下是重新生成数据帧的代码: df1 <- data_frame(a = c(0,1,0,1), b = c(0,0,1,1), c = c(0,0,0,0), d = c(1,0,0,1), x1= c(NA, NA, NA, NA), x2= c(NA, NA, NA, NA), x3= c(NA, NA, NA, NA)) a b c d x1 x2 x3 1 0 0 1 5 NA N
x1-3
需要解析并插入新值
以下是重新生成数据帧的代码:
df1 <- data_frame(a = c(0,1,0,1), b = c(0,0,1,1), c = c(0,0,0,0), d =
c(1,0,0,1), x1= c(NA, NA, NA, NA), x2= c(NA, NA, NA, NA), x3= c(NA, NA, NA, NA))
a b c d x1 x2 x3
1 0 0 1 5 NA NA NA
2 3 9 2 1 NA NA NA
3 4 2 3 5 NA NA NA
4 2 1 4 1 NA NA NA
理想情况下,x1
和x2
中的所有值都将根据其给定条件进行更改<代码>X3无论如何都应该用1
填充。有谁能建议一种有效的方法来循环和解析这些列吗 您不需要循环:
df1$x1 <- df1$a
df1$x2 <- as.integer(df1$a & df1$b)
df1$x3 <- 1
编辑:
如果列a-d不是二进制值(0或1),仍然可以使用相同的表达式创建列x1-3。假设您有这个数据帧:
df1 <- data_frame(a = c(0,1,0,1), b = c(0,0,1,1), c = c(0,0,0,0), d =
c(1,0,0,1), x1= c(NA, NA, NA, NA), x2= c(NA, NA, NA, NA), x3= c(NA, NA, NA, NA))
a b c d x1 x2 x3
1 0 0 1 5 NA NA NA
2 3 9 2 1 NA NA NA
3 4 2 3 5 NA NA NA
4 2 1 4 1 NA NA NA
你的情况是:
x1 = 1 if (b >= 2) and (d < 4) 0 otherwise
x2 = 1 if (a > b) and (b < d) 0 otherwise
x3 = always 1
感谢您提供这个简单而优雅的解决方案。虽然这是我最初的问题,但我确实想通过想象a、b、c不是
0
或1
,而是其他整数,例如1
,2
,3
,4
,我必须使用函数循环吗?再次感谢@EdwardLin我用你的新条件编辑了我的答案,希望有帮助:)非常感谢@CharlesMitjans,这是非常有用的,也是一个优雅的解决方案。
df1$x1 <- as.integer(df1$b >= 2 & df1$d < 4)
df1$x2 <- as.integer(df1$a > df1$b & df1$b < df1$d)
df1$x3 <- 1
a b c d x1 x2 x3
1 0 0 1 5 0 0 1
2 3 9 2 1 1 0 1
3 4 2 3 5 0 1 1
4 2 1 4 1 0 0 1