假设我有一堆列,其中许多列名称中包含“start_time”。如何计算每一列中 NA
值的数量并分别显示答案(不是所有找到的 NA
值的总和)。
示例输出:
abc_start_time
## 5
xyz_start_time
## 1
ggg_start_time_end
## 0
或类似的东西。
最佳答案
使用 colSums()
将 TRUE/FALSE 与 grep()
相加以识别所有需要的列:
colSums(is.na(df[grep("start_time", names(df))]))
# abc_start_time xyz_start_time ggg_start_time_end
# 5 2 0
is.na(df[grep("start_time", names(df))]
部分将返回一个 bool 矩阵 (TRUE/FALSE),其中包含“starts_with”的所有列name. colSums()
部分将按列将所有 TRUE
为 1 和 FALSE
为 0 相加。
数据
df <- data.frame(abc_start_time = seq.Date(as.Date("2023/01/01"), as.Date("2023/01/30"), by = "day"),
xyz_start_time = seq.Date(as.Date("2023/01/01"), as.Date("2023/01/30"), by = "day"),
ggg_start_time_end = seq.Date(as.Date("2023/01/01"), as.Date("2023/01/30"), by = "day"),
another_column = seq.Date(as.Date("2023/01/01"), as.Date("2023/01/30"), by = "day"))
df[c(1,3,5:7), 1] <- NA
df[c(6,7), 2] <- NA
关于r - 如何查找包含特定字符串的列名中 `NA`值的个数,并分别显示每列 `NA`值的个数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75139506/