我希望根据2种情况选择数据的一个子集:
首先,这是我的数据:
Gene AreaID Label
DNAJC12 rs1111111 unlikely
HERC4 rs1111111 unlikely
RP11-57G10.8 rs2222222 possible
RPL12P8 rs1111111 unlikely
SIRT1 rs3333333 certain
RP11-57G10.8 rs3333333 possible
RPL12P8 rs3333333 unlikely
SIRT1 rs3333333 unlikely
我正在寻找一个子集,以选择带有“不太可能”标签且基因具有相同区域ID的基因。但是,对于带有其他任何标记的任何其他基因,该ID也必须不存在。
例如,我的输出将仅选择以下内容:
Gene AreaID Label
DNAJC12 rs1111111 unlikely
HERC4 rs1111111 unlikely
RPL12P8 rs1111111 unlikely
并且不包括rs333333
区域ID,该ID不太可能具有重复的ID,但具有不同标签的基因。
从本质上讲,我正在寻找仅将基因标记为不太可能的区域的子集。
我已尝试根据此处的类似问题进行尝试,但这似乎不起作用:
loci <- read.csv('dataset.csv')
sub_list <- lapply(1:length(loci), function(i) loci %>% filter(loci$AreaID==duplicated(loci) & loci$Label =='unlikely'))
do.call(rbind, sub_list)
我也尝试过:
prediction_snps = loci$AreaID[loci$label == 'unlikely']
result = loci[prediction_snps, ]
我目前还不熟悉R,所以我不确定该如何处理
答案 0 :(得分:1)
我们可以尝试
library(dplyr)
df1 %>%
filter(AreaID != "rs3333333") %>%
filter(Label == "unlikely")
# Gene AreaID Label
#1 DNAJC12 rs1111111 unlikely
#2 HERC4 rs1111111 unlikely
#3 RPL12P8 rs1111111 unlikely
或者也可以
df1 %>% group_by(AreaID) %>% filter(first(Label) == "unlikely")
答案 1 :(得分:1)
在 base 中,您可以为仅带有标记为不太可能的基因的区域获得一个子集,其中:
operator[]
答案 2 :(得分:1)
group_by AreaID
,然后过滤所有Label
等于“不太可能”的地方
library(dplyr)
df %>% group_by(AreaID) %>% filter(all(Label=="unlikely"))
# A tibble: 3 x 3
# Groups: AreaID [1]
Gene AreaID Label
<chr> <chr> <chr>
1 DNAJC12 rs1111111 unlikely
2 HERC4 rs1111111 unlikely
3 RPL12P8 rs1111111 unlikely