r - 如何根据另一个变量的缺失值返回 ID 列表?

标签 r dataframe missing-data

自从我使用 R 以来已经有一段时间了,所以很抱歉问了这样一个基本的问题:s

我有一个变量,其中包含相同 ID 的基线、4 个月和 12 个月的数据。我本质上是想找出哪些 ID 在 4 个月内丢失了数据,这样我就可以从整个数据集中删除这些 ID。

   ID     Baseline  4MOS     12MOS
123_ABC   53.5       NA       NA
456_DEF   45.1       32.5     12.2
789_GHI   45.4       NA       NA
923_JKL   88.4       11.1     23.1
734_BBB   45.4       20.1     NA
343_CHF   22.1       16.1     NA

我已经确定了缺少 4 个月数据的行号:

clean <- which(is.na(df$4MONTHS))

这是我后来尝试将 ID 返回给我的代码,但它只是给了我一条消息“错误:尝试应用非功能”:

clean <- list(df$ID(which(is.na(df$4MOS))))

很高兴感谢您对此的任何帮助!

最佳答案

编辑:

要获取带有 NA 的 ID(这里我们假设所有都是 NA 而不仅仅是任何 NA。在后一种情况下,请使用 anyNA相反):

df %>% 
   group_by(ID) %>% 
   filter(all(is.na(X4MOS))) %>% 
   pull(ID)
[1] "123_ABC" "789_GHI"

基础(无分组):

df[is.na(df["X4MOS"]),"ID"]
[1] "123_ABC" "789_GHI"

ORIGINAL:返回所有不NA

的情况

dplyr 解决方案:

df %>% 
   group_by(ID) %>% 
   filter(!all(is.na(X4MOS)))
# A tibble: 4 x 4
# Groups:   ID [4]
  ID      Baseline X4MOS X12MOS
  <chr>      <dbl> <dbl>  <dbl>
1 456_DEF     45.1  32.5   12.2
2 923_JKL     88.4  11.1   23.1
3 734_BBB     45.4  20.1   NA  
4 343_CHF     22.1  16.1   NA 

使用基础(无分组):

df[!is.na(df["X4MOS"]),]
       ID Baseline X4MOS X12MOS
2 456_DEF     45.1  32.5   12.2
4 923_JKL     88.4  11.1   23.1
5 734_BBB     45.4  20.1     NA
6 343_CHF     22.1  16.1     NA

数据:

df <- structure(list(ID = c("123_ABC", "456_DEF", "789_GHI", "923_JKL", 
"734_BBB", "343_CHF"), Baseline = c(53.5, 45.1, 45.4, 88.4, 45.4, 
22.1), X4MOS = c(NA, 32.5, NA, 11.1, 20.1, 16.1), X12MOS = c(NA, 
12.2, NA, 23.1, NA, NA)), class = "data.frame", row.names = c(NA, 
-6L))

关于r - 如何根据另一个变量的缺失值返回 ID 列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61334227/

相关文章:

r - 具有交互作用的线性回归图

r - 如何添加纹理以填充ggplot2中的颜色

R 在多个数据框列中查找值

r - 提取具有缺失值阈值的变量名称

r - 如何使用嵌套图加速 react 速度?

r - R可以将纬度和经度点合并到空间多边形中的区域吗?

python - 多个指标的相关性

python - 连接两个 Pandas 数据框而不对初始列进行排序

r - 如何总结具有缺失数据的分类变量?

通过将行与 R 中的匹配属性绑定(bind)来替换缺失的 "NA"值