我想在这里找到一个解决方案,在逐行的基础上决定3-4列(应用?),并在新列中分配最高值列的名称[df $ NAME] 。以下是我希望看到的结果;对此最好的方法是什么?谢谢!
| Bird | Cat | Dog | NAME
| 3 | 4 | 10 | DOG
| 5 | 2 | 4 | BIRD
| 3 | 6 | 2 | CAT
| 4 | 8 | 9 | DOG
答案 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));