r - 如何根据列中的两个值过滤行?

标签 r dplyr

对 R 完全陌生,我尝试使用 dplyr 包解决这个问题。我想过滤掉并返回同时具有 Import 和 Export 值的国家并分别查看它们。 select、filter等很多方法都试过了,都不行。

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

理想情况下,最终结果应该是这样的:

Country Year    Quantity    Description Import/Export
B   2001    50  Fresh   Import
B   2004    20  Frozen  Export
C   2003    30  Frozen  Import
C   2005    40  Fresh   Export
C   2006    60  Frozen  Import

最佳答案

我们可以group_by() Country,然后用any "Import/Export"=='Import' and any "过滤所有组"导入/导出""== '导出'

library(dplyr)

df %>% group_by(Country) %>%
        filter(any(`Import/Export`=='Import') & 
               any(`Import/Export`=='Export')) %>%
        ungroup()

# A tibble: 5 x 5
  Country  Year Quantity Description `Import/Export`
  <chr>   <dbl>    <dbl> <chr>       <chr>          
1 B        2001       50 Fresh       Import         
2 B        2004       20 Frozen      Export         
3 C        2003       30 Frozen      Import         
4 C        2005       40 Fresh       Export         
5 C        2006       60 Frozen      Import 

数据

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"
    )), row.names = c(NA, -7L), class = c("tbl_df", "tbl", "data.frame"
))

关于r - 如何根据列中的两个值过滤行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69143212/

相关文章:

r - 如何在 shiny 中使用带有 reactiveValues 的 debounce

r - 是否可以暂停正在运行的 R 脚本?

r - 按最接近定义值的组进行子设置

r - 使用 dplyr 汇总并统计分组 df 中唯一值的数量

将多列中的所有非 NA 替换为特定字符串

r - 在函数内部为 dplyr 使用变量名

r - 使用 dplyr 进行问题编程——列绝对是一个被选取为公式的向量

sql - 循环有条件导出表 SAS(大量变量)

r - 贝叶斯预测,下标越界

r - Group_by/summarize 通过函数内的两个变量