2015-04-11 2 views
1

У меня проблема с R complete.cases() funciton.R - complete.cases не все аргументы имеют одинаковую длину

Я использую Electric power consumption data, и я хотел проверить, есть ли какие-либо NA в моем подмножестве, используя функцию complete.cases().

Я ожидаю получить количество полных случаев, но вместо этого получаю сообщение об ошибке, говоря, что «не все аргументы имеют один и тот же legnth».

Я даю complete.cases() только один аргумент, который является фреймом данных. Все столбцы в df имеют одинаковую длину. Конечно, я могу проверить NA в каждом столбце, используя функцию sum (is.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)) 
+1

Спасибо за воспроизводимый код, но лучше, если бы вы предоставили небольшой набор данных (вместо zip-файла), которые воспроизводят ошибку. – akrun

+4

Преобразуйте столбец POSIXlt (list) в POSIXct (вектор), и он будет работать: 'data $ Time <- as.POSIXct (data $ Time); сумма (complete.cases (данные)) '. См. Также здесь: http://stackoverflow.com/questions/27957819/complete-cases-and-data-frames-with-posixlt – lukeA

+0

@lukeA благодарим вас за помощь. –

ответ

3

Существует некоторая проблема с complete.cases и даты обработки, она упоминается здесь:

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

Ваши данные frame содержит даты, поэтому он должен быть связан с этим. Я проверил, что na.omit отлично работает с вашим набором данных, поэтому вы можете использовать его вместо этого.

+0

Спасибо :) Я не думал о датах как о причине проблемы. –

Смежные вопросы