首页 > 解决方案 > 如何使用 group_by 条件删除行。R

问题描述

我的数据集看起来像这样

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 年的 APVAPS )NA

标签: rdataframedplyr

解决方案


如果要删除一个id如果它具有2014 年到 2019 年之间NA的所有值APV和列。APS

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    

推荐阅读