2015-04-12 2 views
1

Я пытаюсь проанализировать большой набор данных. Один из столбцов - столбец старта, а его исходный класс - символ.Ошибка при попытке конвертировать из символа в дату в R

Я использовал эту команду:

data$starttime = strptime(data$starttime, "%Y-%m-%d %H:%M:%S). 

Я получаю сообщение об ошибке:

**Error in `[<-.data.table`(x, j = name, value = value) : 
    (list) object cannot be coerced to type 'double'** 

Дополнительно: Предупреждение Сообщение:

**In `[<-.data.table`(x, j = name, value = value) : 
    Supplied 11 items to be assigned to 13118401 items of column 'startime' (recycled leaving remainder of 10 items).** 

Я также попытался as.Date() и ymd_hms(), но они дали ту же ошибку. Что именно это означает и как я могу это исправить?

+4

Добро пожаловать на SO. Не могли бы вы предоставить свои данные вместе с кодом? Вы, скорее всего, получите больше помощи, когда вы это сделаете. – jazzurro

ответ

5

Я думаю, что проблема заключается в природе структуры POSIXlt (являющейся списком из 11 векторов). Вы можете посмотреть это, посмотрев на

names(unclass(strptime("2015-01-01", format = "%Y-%m-%d"))) 
# [1] "sec" "min" "hour" "mday" "mon" "year" "wday" "yday" "isdst" "zone" 
# [11] "gmtoff" 

Наличие списка в кадре данных не является невозможным, но может вызвать ненужные проблемы. Минимальный пример:

library(data.table) 
df1 <- data.table(a = 1:2, time = sprintf("2015-01-%02d", 1:2)) 
df1$time <- strptime(df1$time, format = "%Y-%m-%d") 

# Warning messages: 
# 1: In `[<-.data.table`(x, j = name, value = value) : 
# Supplied 11 items to be assigned to 2 items of column 'time' (9 unused) 

или

library(dplyr) 
df1 <- data_frame(a = 1:2, time = strptime(sprintf("2015-01-%02d", 1:2), format = "%Y-%m-%d")) 
df1 
# Warning message: 
# In `[<-.data.frame`(`*tmp*`, is_list, value = list(time = c("<dbl[2]>", : 
# replacement element 1 has 11 rows to replace 2 rows 

Я думаю, с помощью POSIX гр т должны решить хотя бы одну из ваших проблем:

as.POSIXct(data$starttime, format = "%Y-%m-%d %H:%M:%S") 
Смежные вопросы