数据框是
**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
请您参考如下方法:
可以使用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()
条件来解决此问题。