Skip to main content
 首页 » 编程设计

r中将向量 X 设置为其他 2 个向量中向量 Y 最接近的值

2025年05月04日58zlslch

数据框是

**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() 条件来解决此问题。