如果第1列大于第2列,则在第3列中指定名称“Col1”

时间:2016-07-12 15:15:24

标签: r

我想在这里找到一个解决方案,在逐行的基础上决定3-4列(应用?),并在新列中分配最高值列的名称[df $ NAME] 。以下是我希望看到的结果;对此最好的方法是什么?谢谢!

| Bird | Cat | Dog |  NAME
| 3    |  4  |  10 |   DOG 
| 5    |  2  |   4 |   BIRD
| 3    |  6  |   2 |   CAT
| 4    |  8  |   9 |   DOG

1 个答案:

答案 0 :(得分:0)

Is there something like a pmax index?非常适合你。

基于max.col()的解决方案(链接问题中的第二个答案)优于基于apply()的解决方案,无论是为了简单还是效率。

df$NAME <- names(df)[max.col(df)];
df;
##   Bird Cat Dog NAME
## 1    3   4  10  Dog
## 2    5   2   4 Bird
## 3    3   6   2  Cat
## 4    4   8   9  Dog

数据

df <- data.frame(Bird=c(3L,5L,3L,4L),Cat=c(4L,2L,6L,8L),Dog=c(10L,4L,2L,9L));