r - 如果另一个感兴趣的变量不止一次出现,则如果存在 NA 则子集行?
问题描述
Indicator Name Examine
1 Alpha NA
2 Beta 2013
3 Beta 2017
4 Beta NA
5 Charlie 2013
6 Charlie 2017
7 Charlie NA
8 Delta 2016
9 Echo 2016
10 <NA> NA
11 <NA> NA
12 Foxtrot 2007
13 Foxtrot NA
在这里,我想删除NA
存在 an 的行Examine
,如果Indicator Name
有多个条目,除了.NA
因此,将删除第 4、7 和 13 行。
样本df:
structure(list(`Indicator Name` = c("Alpha", "Beta", "Beta",
"Beta", "Charlie", "Charlie", "Charlie", "Delta", "Echo", NA,
NA, "Foxtrot", "Foxtrot"), Examine = c(NA, 2013, 2017, NA, 2013,
2017, NA, 2016, 2016, NA, NA, 2007, NA)), row.names = c(NA, 13L
), class = "data.frame")
解决方案
按“指标名称”分组后,在 中创建条件filter
以删除 NA 元素或保留如果all
元素NA
library(dplyr)
df %>%
group_by(`Indicator Name`) %>%
filter(!is.na(Examine)| all(is.na(Examine)))
或者使用相同的逻辑base R
df[with(df, ave(is.na(Examine), `Indicator Name`, FUN = function(x) !x|all(x))),]
推荐阅读
- ubuntu - 如何配置 apport 以收集核心转储,但不上传?
- c - C根据给定的整数值调用不同的函数
- unity3d - how do I toggle 'solo' and 'mute' from script (animator)
- fortran - Fortran - 写语句影响后续计算
- c# - C# - 如何遍历类中的所有字段并在这些字段上调用方法?
- html - httpd 禁止访问不是在 /var/www/html/ 中创建的文件
- c++ - 为什么控制台要求更多输入?C++
- android - 如何在意图引用的活动中触发动作?
- javascript - 为按钮创建了一个具有两个函数的 AddEventListener。两个功能中只有一个起作用
- php - Laravel 记录不删除也不销毁