如何比较重复的值并过滤掉R数据帧中不需要的值?

时间:2019-12-27 09:23:50

标签: r

我像这样组成了一个测试数据框:

gene <- as.factor(c('A','B','B','B','C','C','D'))
location <- as.integer(c(1,4,5,6,2,3,9))
df <- data.frame(gene, location)

> df
  gene location
1    A        1
2    B        4
3    B        5
4    B        6
5    C        2
6    C        3
7    D        9

我想保留唯一的基因A,B,C,D,并过滤掉位置不高的重复基因。 (例如,对于基因B,将仅保留位置6的B;对于基因C,将仅保留位置3的C)。

所以最终结果应该像这样:

  gene location
1    A        1
4    B        6
6    C        3
7    D        9

有人知道我该怎么做吗?

2 个答案:

答案 0 :(得分:4)

您可以使用aggregate()ave()来做到这一点,即

dfout <- aggregate(location ~ gene, df, FUN = max)

dfout <- unique(within(df,location <- ave(location,gene,FUN = max)))

如此

> dfout
  gene location
1    A        1
2    B        6
3    C        3
4    D        9

答案 1 :(得分:3)

如果您的数据框包含的基因和位置不止一个,则可以尝试:

window.open()
相关问题