У меня есть длинный файл csv, и я хочу импортировать некоторые данные (на основе определения colClasses
) плюс его соответствующую метку времени. Я пробовал это с помощью двух разных методов, первый с моей собственной функцией (based on this answer). Вот некоторые основные вход воспроизвести результаты:Формат даты и времени импорта
setClass("myDate")
setAs("myDate", function(from) as.Date(from, format="%d.%m.%Y %H:%M:%S"))
data <- c("15.08.2008 00:00:00,Vienna,bla,142", "23.05.2010 01:00:00,Paris,bla,92")
con <- textConnection(data)
readout <- read.csv(con, colClasses=c('myDate', 'character', 'NULL', 'numeric'), header=FALSE)
print(readout)
Однако вывод содержит только дату, но не время (readout$V1: Date, format: "2008-08-15" "2010-05-23"
):
V1 V2 V4
1 2008-08-15 Vienna 142
2 2010-05-23 Paris 92
Я попытался это также с серией zoo
, но я думаю, что это не то, что я хочу, хотя этот способ содержит также время (данные индексируются соответствующей отметкой времени):
library(zoo)
csv <-
"timestamp,city,foo,elev
15.08.2008 00:00:00,Vienna,bla,142
23.05.2010 01:00:00,Paris,bla,92"
readout = read.zoo(text = csv, sep = ",", header = TRUE, index = "timestamp", format = "%d.%m.%Y %H:%M:%S", tz = "CET")
print(readout)
что дает:
city foo elev
2008-08-15 00:00:00 Vienna bla 142
2010-05-23 01:00:00 Paris bla 92
То, что я действительно хочу, является результатом моей собственной функции, но также содержит время, а не только дату.
Почему вы используете 'as.Date', если хотите datetimes? Используйте 'as.POSIXct'. – Roland
'as.Date()' возвращает дату. Вот почему ваша пользовательская функция возвращает дату, а не метку времени. 'strptime()' - это то, что вы хотите использовать. –
Не работает ни с обоими ('Ошибка в матче (класс2, nm1): 'match' требует векторных аргументов') – GeoEki