Как работать с 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 для вас - и не требует явных форматных строк, исходных значений или других задержек.

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

Другие вопросы по тегам