Работа с датами по строкам: получение строк дат ("POSIXct") из кадра данных без потери класса - PullRequest
0 голосов
/ 23 мая 2019

У меня есть фрейм данных с именем df, где все столбцы имеют класс "POSIXct".Вот так:

df
                   X1                  X2
1 2000-01-01 00:00:00 2000-01-01 00:00:03
2 2000-01-01 00:00:01 2000-01-01 00:00:04
3 2000-01-01 00:00:02 2000-01-01 00:00:05

Я хочу, чтобы все значения были в одном векторе "POSIXct" путем извлечения значений по строкам.Итак, это мой ожидаемый результат:

vec <- magicfunction(df)
vec
2000-01-01 00:00:00 2000-01-01 00:00:03 2000-01-01 00:00:01 2000-01-01 00:00:04 2000-01-01 00:00:02 2000-01-01 00:00:05

К сожалению, do.call ("c", df) работает по столбцам.Существует вопрос о том, как выводить список по строкам, где рекомендуется использовать t (), но использование функции t () преобразует информационный кадр в матрицу, которая также не работает с датами.Кроме того, apply (df, 1, function (x) ...) обрабатывает кадры данных по строкам, но apply () также изменяет даты.С другой стороны, lapply () работает с датами, но работает по столбцам.

Это данные, которые я использовал в примере:

library(lubridate)
k <- 2
vec <- seq(ymd_hms("2000-01-01 00:00:00"),
           ymd_hms("2000-01-01 00:00:5"),
           by = 1)

df <- as.data.frame(split(vec, f = as.factor(rep(1:k, each = length(vec)/k))))

1 Ответ

1 голос
/ 28 мая 2019

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

df1 <- split(df,1:nrow(df))
do.call("c",lapply(df1,function(x) do.call("c",x)))

Обратите внимание, что ни дубликат, ни мой комментарий не предлагают do.call("c",df) во всем фрейме данных,так что не удивительно, что это не работает.

...