gpt4 book ai didi

使用 colnames & apply 返回数据框行中第一个出现的第二大值

转载 作者:行者123 更新时间:2023-12-02 05:58:44 24 4
gpt4 key购买 nike

假设我有一个 df

> editor
A B C D E F G H I J
User1 1 0 5 6 5 6 5 6 2 6
User2 0 5 4 6 4 5 5 1 7 5

我想在上面的行中存储第一个出现的第二大值的列名。预期结果

> editor
A B C D E F G H I J 2nd_highest
User1 1 0 5 6 5 6 5 6 2 6 C
User2 0 5 4 6 4 5 5 1 7 5 D

我试过了 edited$2nd_highest <- colnames(edited)[apply(edited, 1, which.max)+1]但效果不佳。

有什么想法吗?

最佳答案

这里尝试使用代数来实现这一点,以保持向量化并避免按行操作(尽管它仍然进行类似于 apply 的矩阵转换)。这里的想法是找到最大值 - 然后从数据集中减少它,然后转换为 log(乘以 -1 后)这将导致最大值成为 -Inf(表示最小值),然后执行 1/result 以从剩下的值中找到最大值。

indx <- max.col(1/log((editor - editor[cbind(1:nrow(editor), 
max.col(editor))]) * -1), ties.method = "first")
names(editor)[indx]
# [1] "C" "D"

关于使用 colnames & apply 返回数据框行中第一个出现的第二大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36713588/

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