gpt4 book ai didi

r - 获取按行排列的第一和第二最大名称

转载 作者:行者123 更新时间:2023-12-05 03:57:17 27 4
gpt4 key购买 nike

我试图通过相应的变量名获取一行的第一个最大值和第二个最大值。请帮助我实现这一目标。

数据框:

df1 <-  data.frame(AC=c(1.463437e-04,1.023486e-04,1.584040e-05 ),
BAT = c(6.555388e-05,5.471379e-01,6.025364e-06),
REC = c(6.541157e-05,9.590567e-05,1.581244e-01))

预期输出:

       AC                       BAT          REC         First_Max  Second_Max    
1 1.463437e-04 6.555388e-05 6.541157e-05 AC REC
2 1.023486e-04 5.471379e-01 9.590567e-05 BAT AC
3 1.584040e-05 6.025364e-06 1.581244e-01 REC AC

最佳答案

您可以使用order 函数获取值的顺序,并从列名中获取对应的名称(colnames)。

要遍历行,请使用 apply(df1, 1, function)

我把所有这些都放在一行中:

(df1 <- setNames(cbind(df1, t( # cbind to add the two result columns
apply(df1, 1, function(x) { # apply to iterate over the rows of the data.frame
colnames(df1)[order(x, decreasing = T)][1:2] # get the column names into the decreasing order of their values and select only the first two columns
})
)), c(colnames(df1), "First_Max", "Second_Max"))) # add the correct names for the two extra columns
            AC          BAT          REC First_Max Second_Max
1 0.0001463437 6.555388e-05 6.541157e-05 AC BAT
2 0.0001023486 5.471379e-01 9.590567e-05 BAT AC
3 0.0000158404 6.025364e-06 1.581244e-01 REC AC

关于r - 获取按行排列的第一和第二最大名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58681974/

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