【问题标题】:How to delete rows using group_by conditionals. R如何使用 group_by 条件删除行。 R
【发布时间】:2021-06-08 00:23:39
【问题描述】:

我的数据集是这样的

Year     id      APV      APS 
2012     A        Y        N
2013     A        NA       NA
2014     A        NA       NA
2015     A        NA       NA
2016     A        NA       NA
2017     A        NA       NA
2018     A        NA       NA
2019     A        NA       NA

2012     B        Y        N
2013     B        Y        N
2014     B        NA       NA
2015     B        NA       NA
2016     B        NA       NA
2017     B        NA       NA
2018     B        NA       NA
2019     B        NA       NA

2012     C        Y        Y
2013     C        Y        Y
2014     C        Y        Y
2015     C        Y        Y
2016     C        Y        Y
2017     C        Y        Y
2018     C        Y        Y
2019     C        Y        Y
.        .        .        .
.        .        .        .
.        .        .        .

如何删除 A 和 B 观察值? (在 2014 & 2015 & 2016 & 2017 & 2018 & 2019)

【问题讨论】:

  • 删除id 的逻辑是什么?如果APVAPS 中的任何一年有NA,你要删除一个id吗?
  • 你可以使用dplyr::filter()
  • @RonakShah 我想删除该类别(id),条件是 2014 年至 2019 年的 APS 或 APV 为 NA

标签: r dataframe dplyr


【解决方案1】:

如果您想删除一个 id,如果它在 2014 年和 2019 年之间在 APVAPS 列中具有 NA 的所有值。

library(dplyr)

df %>%
  group_by(id) %>%
  filter(!all(is.na(APV[between(Year, 2014, 2019)]) & 
              is.na(APS[between(Year, 2014, 2019)]))) %>%
  ungroup

#   Year id    APV   APS  
#  <int> <chr> <chr> <chr>
#1  2012 C     Y     Y    
#2  2013 C     Y     Y    
#3  2014 C     Y     Y    
#4  2015 C     Y     Y    
#5  2016 C     Y     Y    
#6  2017 C     Y     Y    
#7  2018 C     Y     Y    
#8  2019 C     Y     Y    

【讨论】:

    猜你喜欢
    • 2022-01-20
    • 1970-01-01
    • 2022-08-09
    • 2023-01-18
    • 2019-06-05
    • 2022-01-10
    • 1970-01-01
    • 2020-09-03
    • 2018-08-06
    相关资源
    最近更新 更多