gpt4 book ai didi

r - 获取行的最大和第二个最大值,包括 R 中的列名

转载 作者:行者123 更新时间:2023-12-05 09:26:32 30 4
gpt4 key购买 nike

如何返回 data.frame 的列名和行最大值和次最大值的值?

示例数据:

example_df <- data.frame(
mycol1 =c(101,-108,140,140,-150),
mycol2 = c(111,-105,128,-220,-150),
mycol3 = c(-103,-102,123,-210,-180),
mycol4 =c(106,-102,140,-200,-180),
mycol5 =c(-105,-106,120,-150,-180)
)

所需数据:


desired_df <- data.frame(
firstmax=c("mycol2 111","mycol3 -102","mycol1 140","mycol1 140", "mycol1 -150"),
secondmax=c("mycol4 106", "mycol4 -102", "mycol4 140","mycol5 -150","mycol2 -150"),
stringsAsFactors = F
)

最佳答案

这可能不是最有效的方法,但它可以完成工作,

vals <- t(apply(example_df, 1, \(i)sort(i, decreasing = TRUE))[1:2,])
nms <- t(apply(example_df, 1, \(i)names(i)[order(i, decreasing = TRUE)])[1:2,])

mapply(\(x, y) paste(x, y, sep = ' '), data.frame(nms), data.frame(vals))

X1 X2
[1,] "mycol2 111" "mycol4 106"
[2,] "mycol3 -102" "mycol4 -102"
[3,] "mycol1 140" "mycol4 140"
[4,] "mycol1 140" "mycol5 -150"
[5,] "mycol1 -150" "mycol2 -150"

您可以按照自己的方式整理输出。您还可以使用 max.col() 对其进行某种程度的矢量化

关于r - 获取行的最大和第二个最大值,包括 R 中的列名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73835736/

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