【问题标题】:Filtering a dataframe in row names from a column values从列值中过滤行名中的数据框
【发布时间】:2012-10-18 14:26:21
【问题描述】:

基本上我有两列的数据框(target_idfpkm)。我只想在第一列中保留那些不重复的行名。
例如,在下面的数据框中,您可以看到有两个具有相同名称(几乎)comp267138_c0_seq1comp267138_c0_seq2 的行名称,并且我只想保留一个 comp267138_c0_seq2,基于第 2 列中的高值。

       target_id        fpkm
comp247393_c0_seq1    3.197885
comp257058_c0_seq4    1.624577
comp242590_c0_seq1    1.750319
comp77911_c0_seq1     1.293059
comp241426_c0_seq1    1.626589
comp288413_c0_seq1   14.828853
comp294436_c0_seq1   11.555596
comp63603_c0_seq1     1.982386
comp267138_c0_seq1    8.594494
comp267138_c0_seq2   11.134958
comp321623_c0_seq1    6.934149

【问题讨论】:

  • + 1 用于发布示例数据。

标签: r filtering dataframe


【解决方案1】:

看来您只想考虑target_id 的一部分(前两个组件,由_ 拆分)

如果您的data.frame 被称为DT

# create   column without the _seqx part
DT$new_id <- sapply(lapply(strsplit(as.character(DT[['target_id']]), '_'), head, 2),
              paste, collapse = '_')
library(plyr)


ddply(DT, .(new_id), function(x) x[which.max(x$fpkm),])

【讨论】:

    猜你喜欢
    • 2017-11-12
    • 1970-01-01
    • 2018-02-19
    • 2020-03-16
    • 1970-01-01
    • 1970-01-01
    • 2017-08-15
    • 2018-11-24
    • 1970-01-01
    相关资源
    最近更新 更多