gpt4 book ai didi

R 创建列,其中包含每行最大值的列名

转载 作者:行者123 更新时间:2023-12-04 12:09:27 25 4
gpt4 key购买 nike

我和这个问题有同样的要求:For each row return the column name of the largest value
但是,我需要保存每行最大值的所有列的名称。如果每行有两个相同的最大值,则上面链接中提供的所有解决方案都会导致问题。

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

谢谢!

最佳答案

您可以使用 rowwisedplyr并获取具有最大值的行的列名。

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 = '_'))

关于R 创建列,其中包含每行最大值的列名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67919436/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com