为R中数据框的每一行返回包含缺失(NA)数据的列名列表 [英] Return list of column names with missing (NA) data for each row of a data frame in R

查看:3
本文介绍了为R中数据框的每一行返回包含缺失(NA)数据的列名列表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试为数据帧中的每个ID#创建一个具有NA值的数据列表,以便我可以跟踪丢失的数据。我有一个数据帧,其中每一行都是一个ID#,每一列都是一个变量名。每个ID#可能有不同的缺失数据,所以我想将此信息压缩到一个两列的表中。目前,我的表如下所示:

ID  Var1 Var2 Var3 Var4 Var5
1   10   T    NA   2    NA
2   15   F    50   2    NA
3   12   NA   41   2    NA
4   NA   NA   NA   1    NA
5   NA   F    NA   NA   NA
...

我希望得到如下所示的输出:

ID   Missing Variables
1    Var3, Var5
2    Var5
3    Var2, Var5
4    Var1, Var2, Var3, Var5
5    Var1, Var3, Var4, Var5
...

我搞不懂如何为每个缺失的数据条目返回列名。我知道您可能可以使用for循环来做这样的事情,但除此之外,我有点迷路了。如有任何帮助,我们不胜感激!

推荐答案

以下是tidyverse解决方案。

df <- read_table("
ID  Var1 Var2 Var3 Var4 Var5
1   10   T    NA   2    NA
2   15   F    50   2    NA
3   12   NA   41   2    NA
4   NA   NA   NA   1    NA
5   NA   F    NA   NA   NA", col_names = TRUE)

library(dplyr)
library(tidyr)
df %>%
  mutate(across(starts_with("var"), is.na)) %>%  # replace all NA with TRUE and else FALSE
  pivot_longer(-ID, names_to = "var") %>%  # pivot longer
  filter(value) %>%   # remove the FALSE rows
  group_by(ID) %>%    # group by the ID
  summarise(`Missing Variables` = toString(var)) # convert the variable names to a string column

`summarise()` ungrouping output (override with `.groups` argument)
# A tibble: 5 x 2
     ID `Missing Variables`   
  <dbl> <chr>                 
1     1 Var3, Var5            
2     2 Var5                  
3     3 Var2, Var5            
4     4 Var1, Var2, Var3, Var5
5     5 Var1, Var3, Var4, Var5

这篇关于为R中数据框的每一行返回包含缺失(NA)数据的列名列表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆