首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于单个列使用AND条件进行过滤

基于单个列使用AND条件进行过滤
EN

Stack Overflow用户
提问于 2020-10-02 19:58:31
回答 1查看 43关注 0票数 1

这是我的示例数据帧

代码语言:javascript
复制
df <- dput(head(Only_mesh,40))
structure(list(PMID = c(1617318, 1691132, 1691132, 1691132, 1691132, 
1691132, 1691134, 1691134, 1691134, 1691134, 1691134, 1691134, 
1828453, 1828453, 1861532, 1861532, 2031969, 2031969, 2031969, 
2182418, 3162515, 3162515, 3305224, 3305224, 3305224, 3305224, 
3520799, 6386072, 6803909, 6803909, 6803909, 7627720, 8193884, 
8193884, 9554461, 9766494, 9766494, 9853980, 9853980, 9853980
), Term = c("Cyclophosphamide", "Daunorubicin", "Cytosine arabinoside", 
"Vincristine", "AMSA", "Azacytidine", "Ara-C", "Amsacrine", "-C", 
"5-azacytidine", "AZA", "Daunorubicin", "Mithramycin", "Hydroxyurea", 
"Retinol", "Retinol palmitate", "Cytosine arabinoside", "Daunorubicin", 
"Amsacrine", "Cytosine arabinoside", "Cytarabine", "Anthracyclines", 
"Cytosine arabinoside", "Daunorubicin", "Thioguanine", "Cyclophosphamide", 
"Rifampicin", "CR", "Doxorubicin", "Cytarabine", "6-thioguanine", 
"Bilirubin", "Fluconazol", "Ofloxacin", "Taxol", "Aclarubicin", 
"Etoposide", "Mitoxantrone", "Cytarabine", "Etoposide"), Class = c("Chemical", 
"Chemical", "Chemical", "Chemical", "Chemical", "Chemical", "Chemical", 
"Chemical", "Chemical", "Chemical", "Chemical", "Chemical", "Chemical", 
"Chemical", "Chemical", "Chemical", "Chemical", "Chemical", "Chemical", 
"Chemical", "Chemical", "Chemical", "Chemical", "Chemical", "Chemical", 
"Chemical", "Chemical", "Chemical", "Chemical", "Chemical", "Chemical", 
"Chemical", "Chemical", "Chemical", "Chemical", "Chemical", "Chemical", 
"Chemical", "Chemical", "Chemical"), MESH = c("MESH:D003520", 
"MESH:D003630", "MESH:D003561", "MESH:D014750", "MESH:D000677", 
"MESH:D001374", "MESH:D003561", "MESH:D000677", "MESH:D002244", 
"MESH:D001374", "MESH:D001379", "MESH:D003630", "MESH:D008926", 
"MESH:D006918", "MESH:D014801", "MESH:C014794", "MESH:D003561", 
"MESH:D003630", "MESH:D000677", "MESH:D003561", "MESH:D003561", 
"MESH:D018943", "MESH:D003561", "MESH:D003630", "MESH:D013866", 
"MESH:D003520", "MESH:D012293", "MESH:D002857", "MESH:D004317", 
"MESH:D003561", "MESH:D013866", "MESH:D001663", "MESH:D015725", 
"MESH:D015242", "MESH:D017239", "MESH:D015250", "MESH:D005047", 
"MESH:D008942", "MESH:D003561", "MESH:D005047")), row.names = c(2L, 
3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L, 13L, 15L, 16L, 17L, 
18L, 19L, 20L, 21L, 22L, 23L, 25L, 26L, 27L, 28L, 29L, 30L, 31L, 
32L, 33L, 34L, 35L, 36L, 37L, 38L, 39L, 40L, 41L, 42L, 43L), class = "data.frame")

我的目标是找出有单个网格项的PMID,然后在多个PMID上找到多个网格项,如双网格或三重网格。

例如,对于单网格项,我使用这个过滤。

代码语言:javascript
复制
MESH_D003561 = filter(Only_mesh, MESH  %in% c("MESH:D003561"))
MESH_D003630 = filter(Only_mesh, MESH  %in% c("MESH:D003630"))

如果我想知道有多少PMID同时具有上述两个网格术语,如'MESH:D003561' and 'MESH:D003630'

我试过了

代码语言:javascript
复制
x <- dplyr::filter(Only_mesh, MESH == "MESH:D003561" & MESH == "MESH:D003630") 

我看不到任何输出,我所理解的是,要使用'AND‘条件,我需要在一个数据帧中使用两个不同的列。

其中一个很长的方法是我单独过滤每个网格项,然后运行intersect来找出包含这两个网格项的PMID。

但如果有任何建议或帮助,我会很高兴我如何使用"AND“作为我的运算符从单列条件中进行子集或过滤。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-02 20:23:08

您需要首先使用group_by(PMID),然后根据两个网格术语是否都存在于该PMID中进行过滤:

代码语言:javascript
复制
library(dplyr)

Only_mesh %>% 
  group_by(PMID) %>% 
  filter(any(MESH == "MESH:D003561") & any(MESH == "MESH:D003630")) %>%
  filter(MESH == "MESH:D003561" | MESH == "MESH:D003630")

#> # A tibble: 8 x 4
#> # Groups:   PMID [4]
#>      PMID Term                 Class    MESH        
#>     <dbl> <chr>                <chr>    <chr>       
#> 1 1691132 Daunorubicin         Chemical MESH:D003630
#> 2 1691132 Cytosine arabinoside Chemical MESH:D003561
#> 3 1691134 Ara-C                Chemical MESH:D003561
#> 4 1691134 Daunorubicin         Chemical MESH:D003630
#> 5 2031969 Cytosine arabinoside Chemical MESH:D003561
#> 6 2031969 Daunorubicin         Chemical MESH:D003630
#> 7 3305224 Cytosine arabinoside Chemical MESH:D003561
#> 8 3305224 Daunorubicin         Chemical MESH:D003630
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64171158

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档