我正在尝试为数据框中的每个 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) 数据的列名列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64448066/