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 中执行其他常见任务:

如何在 R 中使用 na.omit
如何在 R 中使用complete.cases
如何从R中的数据框中删除空白行

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注