LDT*_*LDT 6 filtering r dataframe dplyr tidyverse
我的数据框看起来像这样
df <- data.frame(gene=c("A","B","C","A","B","D"),
origin=rep(c("old","new"),each=3),
value=sample(rnorm(10,2),6))
gene origin value
1 A old 1.5566908
2 B old 1.3000358
3 C old 0.7668213
4 A new 2.5274712
5 B new 2.2434525
6 D new 2.0758326
Run Code Online (Sandbox Code Playgroud)
我想找到两个不同的起源群体(旧的和新的)之间的共同基因
我希望我的数据看起来像这样
gene origin value
1 A old 1.5566908
2 B old 1.3000358
4 A new 2.5274712
5 B new 2.2434525
Run Code Online (Sandbox Code Playgroud)
任何帮助表示赞赏。理想情况下,我想在使用多列的组中找到共同的行
您可以使用split和reduce来获取共同基因并将其用于filter.
library(dplyr)
library(purrr)
df %>% filter(gene %in% (split(df$gene, df$origin) %>% reduce(intersect)))
# gene origin value
#1 A old 1.271
#2 B old 2.838
#3 A new 0.974
#4 B new 1.375
Run Code Online (Sandbox Code Playgroud)
或者保留基本 R -
subset(df, gene %in% Reduce(intersect, split(df$gene, df$origin)))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
74 次 |
| 最近记录: |