【问题标题】:Filtering rows based on column values using dplyr使用 dplyr 根据列值过滤行
【发布时间】:2021-11-11 02:36:28
【问题描述】:

只是上一个线程的一个后续问题,在以前的帮助下,使用 group_byfilter 允许我只返回具有 Import 和 Export 值的国家/地区并分别查看它们。但是,我现在意识到,我需要根据物种也必须满足导入和导出条件的附加条件返回行。

例如,字符串应该只返回属于 C 国的行,因为物种和国家都满足进出口条件。但我不断发现符合条件的国家有不符合进出口条件的物种。

Country Year    Quantity    Description Import/Export   Species
A   2001    10  Frozen  Export  X
B   2001    50  Fresh   Import  X
B   2004    20  Frozen  Export  Y
C   2003    30  Frozen  Import  X
C   2005    40  Fresh   Export  X
C   2006    60  Frozen  Import  X
D   2007    290 Fresh   Import  Y

这是用于测试的数据:

structure(list(Country = c("A", "B", "B", "C", "C", "C", "D"), 
Year = c(2001, 2001, 2004, 2003, 2005, 2006, 2007), Quantity = c(10, 
50, 20, 30, 40, 60, 290), Description = c("Frozen", "Fresh", 
"Frozen", "Frozen", "Fresh", "Frozen", "Fresh"), `Import/Export` = c("Export", 
"Import", "Export", "Import", "Export", "Import", "Import"
), Species = c("X", "X", "Y", "X", "X", "X", "Y")), class = c("tbl_df", "tbl", "data.frame"), row.names = c(NA, -7L))

【问题讨论】:

  • 上一个帖子的链接:stackoverflow.com/questions/69143212/…
  • 如果您在帖子中运行代码,它只会返回 Country = 'C' 的行。你的预期输出是什么?
  • @RonakShah 嗨罗纳克!这实际上是预期的输出,当我重新启动 RStudio 时,它在第二次尝试时工作......不知道为什么,但我想它现在工作了!

标签: r filter dplyr group-by


【解决方案1】:

基于国家和物种的分组帮助我得到了答案,尝试了几次,但下面的 dplyr 字符串有效

df %>% group_by(Country,Species) %>% filter(all(c('Import', 'Export') %in% Import/Export)) %>% ungroup()

【讨论】:

    猜你喜欢
    • 2017-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-20
    • 1970-01-01
    • 2016-11-13
    相关资源
    最近更新 更多