A:统计每列中na值的个数
可以使用以下方法来统计R中数据框每一列中NA值的数量:
方法1:使用基数R计算每列中的NA值
sapply(df, function (x) sum(is. na (x)))
方法2:使用dplyr统计每列中的NA值
library (dplyr) df %>% summarise(across(everything(), ~ sum(is. na (.))))
以下示例展示了如何在 R 中将每种方法与以下数据帧一起使用:
#create data frame df <- data. frame (team=c('A', 'B', 'C', 'D', 'E'), points=c(99, 90, 86, 88, NA), assists=c(33, NA, NA, 39, 34), rebounds=c(30, 28, 24, 24, 28)) #view data frame df team points assists rebounds 1 A 99 33 30 2 B 90 NA 28 3 C 86 NA 24 4 D 88 39 24 5 E NA 34 28
示例1:使用基数R计算每列中的NA值
以下代码展示了如何使用 R 基础sapply()函数计算每列中 NA 值的数量:
#count NA values in each column sapply(df, function (x) sum(is. na (x))) team points assists rebounds 0 1 2 0
从结果我们可以看出:
- team列的 NA 值为 0。
- 点列有 1 个 NA 值。
- 助攻列有 2 个 NA 值。
- 反弹列有 0 个 NA 值。
注意: sapply()函数可用于将函数应用于数据框中的每一列。在此示例中,我们应用一个函数来计算等于 NA 的元素总数。
示例2:使用dplyr计算每列中的NA值
以下代码展示了如何使用dplyr包中的summarise()函数计算每列中 NA 值的数量:
#count NA values in each column sapply(df, function (x) sum(is. na (x))) team points assists rebounds 0 1 2 0
从结果我们可以看出:
- team列的 NA 值为 0。
- 点列有 1 个 NA 值。
- 助攻列有 2 个 NA 值。
- 反弹列有 0 个 NA 值。
这些结果与前面示例的结果相对应。
注意:当处理极大的数据帧时,dplyr 方法往往比基本 R 方法更快。
其他资源
以下教程解释了如何在 R 中执行其他常见任务: