我像这样组成了一个测试数据框:
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
有人知道我该怎么做吗?
答案 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()