如何将单个值与一行中的多个值进行比较

时间:2017-06-05 10:42:19

标签: r

  

嗨我有一个df,如下所示

**名称| min_date | max_date | act_val | A | B | C | d  sam 2016-06-01 2016-06-27 30724 38115 635 2541 26
fred 2016-06-01 2016-06-27 29270 38115 635 2541 26
hays 2016-06-01 2016-06-27 29270 38115 635 2541 26
2016-16-01 2016-06-27 700 38115 635 2541 26
cains 2016-06-01 2016-06-27 24 38115 635 2541 26
alan 2016-06-01 2016-06-27 28 38115 635 2541 26
vincy 2016-06-01 2016-06-27 3000 38115 635 2541 26

  

我想比较" act_val"与所有其他列一起,以获得最近的>变量名称,即在行1中,30724接近于A中的值(30724~ = 38115)

|名字| min_date | max_date | act_val | A | B | C | D | near_column
 sam 2016-06-01 2016-06-27 30724 38115 635 2541 26 A
fred 2016-06-01 2016-06-27 29270 38115 635 2541 26 A
hays 2016-06-01 2016-06-27 29270 38115 635 2541 26 A
prem 2016-06-01 2016-06-27 700 38115 635 2541 26 B
cains 2016-06-01 2016-06-27 24 38115 635 2541 26 D
alan 2016-06-01 2016-06-27 28 38115 635 2541 26 D
vincy 2016-06-01 2016-06-27 3000 38115 635 2541 26 C

提前致谢

1 个答案:

答案 0 :(得分:1)

我们可以使用max.col

df1$near_column <- names(df1)[-1][ max.col(-abs(df1[-1]- df1[,1]))]
df1$near_column
#[1] "A" "A" "B" "D" "D" "C"