我和这个问题有同样的要求:对于每一行返回最大值的列名
但是,我需要包含每行最大值的所有列的名称。如果我每行有两个相同的最大值,上面链接中提供的所有解决方案都会出现问题。
df <- data.frame(V1=c(2,8,1,5 , 6),V2=c(7,3,5, 7 , 3),V3=c(7,6,4, 5, 1))
df
V1 V2 V3
1 2 7 7
2 8 3 6
3 1 5 4
4 5 7 5
5 6 3 1
现在,我想提取具有最大值的列名。最多作为 df 中的附加列。有点像这样:
> df
V1 V2 V3 Max
1 2 7 7 V3_V2
2 8 3 6 V1
3 1 5 4 V2
4 5 7 5 V2
5 6 3 1 V1
谢谢你!
您可以使用rowwise
in dplyr
并获取具有最大值的行的列名。
library(dplyr)
df %>%
rowwise() %>%
mutate(Max = paste0(names(.)[c_across() == max(c_across())], collapse = '_'))
# V1 V2 V3 Max
# <dbl> <dbl> <dbl> <chr>
#1 2 7 7 V2_V3
#2 8 3 6 V1
#3 1 5 4 V2
#4 5 7 5 V2
#5 6 3 1 V1
在基本 R 中,您可以使用apply
-
df$Max <- apply(df, 1, function(x) paste0(names(df)[x == max(x)],collapse = '_'))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)