首页 > 解决方案 > 如何计算数据集中的空单元格?

问题描述

我一直在尝试确定整个数据集中的空单元格的数量。

我用过sum(is.na()),但是没用。它给出了给出/显示完整行的补充结果sum(complete.cases())(没有任何空单元格)。我也试过了sum(dat$exampleColumn != "")。但是,我想要所有空单元格的数量。有没有人有什么建议?

示例数据

 Age  ZipCode  Smoke  Activity 
  25    13020    No   3x week
  35    08740    Yes  NULL
  15    NULL          5x week
  42             Yes  
  14    42859    N/A  2x week

此示例中只有三个空单元格。我想达到这个值。

上传到 R 后数据集的快照。

dput 的输出

标签: rdataframe

解决方案


complete.cases() 函数计算缺失值的案例,但提供的数据中没有。首先,我们必须将其转换为我们可以阅读的格式:

dat <- read.csv(text=" Age,ZipCode,Smoke,Activity 
  25,13020,No,3x week
  35,08740,Yes,NULL
  15,NULL,,5x week
  42,,Yes,
  14,42859,N/A,2x week", as.is=TRUE)

所有案例都是完整的,因为没有遗漏,即 NA 值:

sum(!complete.cases(dat))
# [1] 0

我们想要数据中的空白数,而不是有空白的案例数:

sum(dat=="")
# [1] 3
which(dat=="", arr.ind=TRUE)
#      row col
# [1,]   4   2
# [2,]   3   3
# [3,]   4   4

但是这个数据将是一个挑战,因为一个杂散的空白字符:“”将被读取为一个非空白字段。

将来,在 R 中创建您的数据并使用 dput(dat) 将其粘贴到您的问题中:

dat <- 
structure(list(Age = c(25L, 35L, 15L, 42L, 14L), ZipCode = c("13020", 
"08740", "NULL", "", "42859"), Smoke = c("No", "Yes", "", "Yes", 
"N/A"), Activity = c("3x week", "NULL", "5x week", "", "2x week"
)), class = "data.frame", row.names = c(NA, -5L))

我们不能确定这正是您的数据应该是什么样子,因为由空格分隔的空格不容易识别,并且字符串可能作为因子存储。


推荐阅读