【问题标题】:R - complete.cases not all arguments have the same lengthR - complete.cases 并非所有参数都具有相同的长度
【发布时间】: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 &lt;- as.POSIXct(data$Time); sum(complete.cases(data))。也可以在这里查看:stackoverflow.com/questions/27957819/…
  • @lukeA 谢谢你的帮助。
  • @akrun 好的,下次我会记住的

标签: r na


【解决方案1】:

complete.cases 和处理日期有些问题,这里提到:

R apply error - error in as.matrix.data.frame()

您的数据框包含日期,因此它应该与之相关。我检查了 na.omit 是否适用于您的数据集,因此您可以使用它。

【讨论】:

  • 谢谢 :) 我不认为日期是问题的原因。
猜你喜欢
  • 1970-01-01
  • 2023-04-06
  • 2019-05-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-13
  • 2021-07-12
  • 2017-06-22
相关资源
最近更新 更多