gpt4 book ai didi

r - 最大折叠

转载 作者:行者123 更新时间:2023-12-02 08:19:24 26 4
gpt4 key购买 nike

我有一个数据框,(我只是展示了df的尾部)这个数据框叫做conv2

8464   208394_x_at                   ESM1                          -1.035878e-01
8468 200858_s_at SNORD55 -1.034971e-01
8469 200858_s_at SNORD38B -1.034971e-01
8467 200858_s_at RPS8 -1.034971e-01
8472 207381_at RPS8 -1.034510e-01
8477 211197_s_at ICOSLG -1.033752e-01

我想要的是,每当第二列中有一个名称重复时,例如 RPS8 删除所有包含该名称的行,第三列中具有最高绝对值的行除外。因此在示例行中 8467 将被删除。

我这样做过

for (d in dup){

conv2 <- rbind(conv2, conv[which(conv$SYMBOL == d),][which.max(abs(conv[which(conv$SYMBOL == d),][,3])),])

}

有更好更快的方法吗?

最佳答案

我们可以使用

library(dplyr)
conv2 %>%
group_by(col1, col2) %>%
slice(which.max(abs(col3)))

更快的选择是

conv2 %>%
group_by(col1, col2) %>%
arrange(desc(abs(col3))) %>%
slice(1)

或者我们可以使用data.table

library(data.table)
setDT(conv2)[order(-abs(col3)), .SD[1L], .(col1, col2)]

注意:应更改列名称(因为示例中未显示)

关于r - 最大折叠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38698736/

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