2016-12-06 12 views
-2

,我有以下数据:如何列名映射到行最小价值

df 
    dc1 dc2 dc3 min_colname 
[1,] 12.9 13.4 13.4 
[2,] 6.1 6.5 6.5 
[3,] 6.3 6.7 6.7 
[4,] 21.0 21.4 21.4 
[5,] 1.6 1.8 1.8 
[6,] 3.3 3.7 3.7 
[7,] 7.0 7.4 7.4 
[8,] 3.2 3.6 3.6 
[9,] 14.8 15.2 15.2 
[10,] 7.9 8.3 8.3 

我想补充一个列说min_colname这将有各行的最小值,但映射到列名。 ...例如用于行1分钟值12.9 ..所以在min_colname的第一个项目应该是dc1而不是实际的OBS值.....

+1

'colnames(df)[max.col(-df,“first”)]' - 很确定这是重复的 – thelatemail

+1

[对于每一行,返回最大值的列名称](http:// stackoverflow.com/questions/17735859/for-each-row-return-the-column-name-of-the-largest-value)或者[R返回每行最小列的索引](http:// stackoverflow .com/questions/18324053/r-return-the-index-of-the-minimum-column-for-each-row) –

+0

您可以稍微调整这些链接中的答案以获得您所需的输出。 –

回答

0

这应该工作:

df$min_colname <- apply(df, 1, function(x) colnames(df)[which.min(x)])