Как работать с POSIXlt в R
Я пытаюсь провести некоторый анализ с помощью файла CSV, который я загрузил в R. Я делал следующее, чтобы получить доступ к определенным значениям с помощью теста [[3]][[1]], например, чтобы получить конкретное значение:
test <- read.csv(file = "test.csv")
test <- data.frame(lapply(test, as.character), stringsAsFactors=FALSE)
В противном случае я бы получил что-то вроде этого:
> chicago[[3]][[1]]
[1] 08/02/2002 11:00:00 AM
19747 Levels: 01/01/2001 03:49:00 AM 01/01/2001 06:17:00 PM 01/01/2001 12:00:00 AM ... 12/31/2015 11:46:00 AM
Поскольку в одном столбце сохраняются даты, я конвертировал его в POSIXlt.
test[[3]] <- strptime(test[[3]], format='%m/%d/%Y %I:%M:%S %p')
Значения теперь изменяются, как и ожидалось, например:
01/28/2004 06:30:00 PM -> 2004-01-28 18:30:00
Пытаясь получить доступ к значениям сейчас, я понял, что, например, test [[3]][[1]] не дает конкретной даты - вместо этого я получаю список, который содержит каждую секунду каждой строки.
Немного протестировав, я обнаружил, что тип POSIXit немного "другой"; в смысле значение, упомянутое выше, выглядит как некий список, подобный этому:
> unlist(unclass(value))
sec min hour mday mon year wday yday isdst zone gmtoff
"0" "0" "11" "2" "7" "102" "5" "213" "1" "CEST" NA
Итак, мой вопрос: есть ли способ получить значения типа "2004-01-28 18:30:00" вместо списка по всему столбцу?
1 ответ
Вы делаете свою жизнь слишком сложной. Вы можете проанализировать либо Date, либо Datetime для всего столбца. Нет необходимости lapply
,
Вы (в общем) не хотите POSIXlt
представление. Посмотрите на существующий пакет, такой как мой (относительно недавний) пакет в любое время (также на CRAN), который даже конвертируется из factor
для вас - и не требует явных форматных строк, исходных значений или других задержек.
Но так как ваш пост не содержит воспроизводимого примера, я не могу помочь с более конкретными шагами.