数据框为
**Y Y1 Y2
58 65 59
60 61 61.4
56 52 78
64 78 80**
我的预期输出应如下所示,其中X应引用Y,并在Y1,Y2中选择一个值,该值会更近。
X是我期望的新输出列,Y是参考列。
Y Y1 Y2 X
58 65 59 59
60 61 61.4 61
56 52 78 52
64 78 80 78
答案 0 :(得分:2)
您可以使用ifelse()
比较两个向量值和初始值之间的差,然后选择较低的值:
df <- data.frame(Y = c(58,60,56,64),
Y1 = c(65,61,52,78),
Y2 = c(59,61.4,78,80))
df$X <- with(df, ifelse(abs(Y1-Y) < abs(Y2-Y), Y1, Y2))
Y Y1 Y2 X
1 58 65 59.0 59
2 60 61 61.4 61
3 56 52 78.0 52
4 64 78 80.0 78
编辑:正如@RuiBarradas指出的那样,应该对绝对值进行比较。我已经更改了ifelse()
条件以解决此问题。