R中每列中缺失值的数量

时间:2018-10-14 23:19:08

标签: r

我正在使用Kaggle的《泰坦尼克号》资料。我正在尝试使用一个简单的函数查找每列中缺失值的数量。

使用以下代码,我能够找到每一列的缺失值数量:

length(which(is.na(titanic_data$PassengerId)))
length(which(is.na(titanic_data$Survived)))
length(which(is.na(titanic_data$Pclass)))
length(which(is.na(titanic_data$Name)))
length(which(is.na(titanic_data$Sex)))
length(which(is.na(titanic_data$Age)))
length(which(is.na(titanic_data$SibSp)))
length(which(is.na(titanic_data$Parch)))
length(which(is.na(titanic_data$Ticket)))
length(which(is.na(titanic_data$Fare)))
length(which(is.na(titanic_data$Cabin)))
length(which(is.na(titanic_data$Embarked)))

我不想为每一列重复代码。所以我写了以下函数:

missing_val<- function(x,y){
  len <-length(which(is.na(x$y)))
  len
}

#create a list of all column names
cols<- colnames(titanic_data)
cols

#call the function
missing_val(titanic_data,cols)

执行missing_val函数时,当我知道Cabin和Embarked列中缺少值的事实时,我总是得到一个奇异的零。

我想要得到的是类似0,0,0,0,0,0,0,0,0,687,2的事实,表明Cabin列中缺少687个变量,而Embark列中缺少了2个事实。

我在这里做错了什么?任何提示将不胜感激。谢谢

2 个答案:

答案 0 :(得分:4)

如果我没记错的话,sapply不会被矢量化。可以直接使用colSumsis.na

>>> colSums(is.na(titanic_train))

答案 1 :(得分:1)

您可以使用sapply

library(titanic)
data(titanic_train)
sapply(titanic_train, function(x) sum(is.na(x)))
PassengerId    Survived      Pclass        Name         Sex         Age 
          0           0           0           0           0         177 
      SibSp       Parch      Ticket        Fare       Cabin    Embarked 
          0           0           0           0           0           0