R 计数数据框中特定字符串的数量

mtf*_*lan 1 string r

很抱歉初学者的问题。

我有一个数据框(我想,如果我在这里错了,请纠正我。)

data <- read.csv("adult.data", sep=',', header=F)
Run Code Online (Sandbox Code Playgroud)

数据是https://archive.ics.uci.edu/ml/machine-learning-databases/adult/adult.data

当数据丢失时,它只有“?” 而不是数据。我需要计算每列中丢失了多少数据。

我可以计算数字的实例,但不能计算字符串。

Col 1 是年龄,所以我可以这样做:

length(which(data[,1] == 55))
Run Code Online (Sandbox Code Playgroud)

它会告诉我这个数据集中有多少人是 55 岁。

但如果我尝试

length(which(data[,2] == "?"))
Run Code Online (Sandbox Code Playgroud)

它说0。

如何比较 R 中的字符串?

Ric*_*ven 5

看起来如果你用na.strings = "?"and再次阅读它strip.white = TRUE,你会得到正确的NA值并且能够使用is.na()

df <- read.csv(
    "http://archive.ics.uci.edu/ml/machine-learning-databases/adult/adult.data", 
    header = FALSE, 
    na.strings = "?", 
    strip.white = TRUE
)

## total NA in the data
sum(is.na(df))
# [1] 4262

## total NA for column 2
sum(is.na(df[[2]]))
# [1] 1836

## count NA by column
colSums(is.na(df))
#   V1   V2   V3   V4   V5   V6   V7   V8   V9  V10  V11  V12  V13  V14  V15
#    0 1836    0    0    0    0 1843    0    0    0    0    0    0  583    0
Run Code Online (Sandbox Code Playgroud)