首页 > 解决方案 > 按行使用日期:从数据框中获取日期行(“POSIXct”)而不丢失类

问题描述

我有一个名为 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))))

标签: rdatevectorextract

解决方案


正如我在评论中提到的,您可以在每一行重复使用副本中的答案:

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

请注意,副本和我的评论都没有暗示do.call("c",df)整个数据框,因此这不起作用也就不足为奇了。


推荐阅读