【发布时间】:2015-06-17 08:17:38
【问题描述】:
我对 R complete.cases() 函数有疑问。
我正在使用Electric power consumption data,我想使用 complete.cases() 函数检查我的子集中是否有任何 NA。
我希望获得完整案例的数量,但我收到一条错误消息,指出“并非所有参数都具有相同的长度”。
我只给 complete.cases() 一个参数,即数据框。 df 中的所有列都具有相同的长度。当然,我可以使用 sum(is.na()) 函数检查每一列中的 NA,但我很好奇为什么 complete.cases() 不起作用。
此外,当我生成包含由随机数填充的 3 列的数据框时,complete.cases() 起作用了。
这是我的代码,以便您可以重现错误:
### READING DATA
# reading full file
data <- read.table("household_power_consumption.txt", header=1, sep=";", na.strings="?")
# changing Date and Time columns to R classes
data$Time = strptime(paste(data$Date, data$Time),"%d/%m/%Y %H:%M:%OS")
data$Date = as.Date(data$Date, format="%d/%m/%Y")
# filtering to needed days
data = subset(data, Date == '2007-02-01' | Date == '2007-02-02')
# checking if there are any NAs in data
dim(data)
sum(complete.cases(data))
【问题讨论】:
-
感谢您提供可重现的代码,但最好提供一个能够重现错误的小型数据集(而不是 zip 文件)。
-
将您的 POSIXlt(列表)列转换为 POSIXct(向量),它将起作用:
data$Time <- as.POSIXct(data$Time); sum(complete.cases(data))。也可以在这里查看:stackoverflow.com/questions/27957819/… -
@lukeA 谢谢你的帮助。
-
@akrun 好的,下次我会记住的