试图从时间戳 R 中提取日期

Posted

技术标签:

【中文标题】试图从时间戳 R 中提取日期【英文标题】:trying to extract date from timestamp R 【发布时间】:2021-12-30 06:03:39 【问题描述】:

我有一个带列的 df

id = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
time = c("2020-12-31 16:00:00 PST", "2020-12-31 16:00:00 PST", "2020-12-31 16:00:00 PST", "2020-12-31 16:00:01 PST", "2020-12-31 16:00:01 PST", "2020-12-31 16:00:02 PST", "2020-12-31 16:00:03 PST", "2020-12-31 16:00:03 PST", "2020-12-31 16:00:03 PST", "2020-12-31 16:00:03 PST")

df = data.frame(id, time)

我在原始时间戳列上使用了anytime() 函数来提取时间,因此这些值是双倍的。我想只保留列中的日期并删除时间和时区。例如,时间列中的第一个值将是“2020-12-31”。有没有快速的方法来做到这一点?

原来我在做:

df$'date' = as.character(anytime(df$time)) 

df = df %>% 
  mutate(date = str_split_fixed(df$date, " ", 2)) %>%
  mutate(date = as.Date(date))

但是,将每个值转换为字符串,然后根据空格进行拆分,然后将日期转换回日期格式需要一段时间(这也会导致维度出现问题,因为数据列仅显示日期,但将该列转换为 as.Date() 显示有问题。有更快的方法吗?谢谢!

【问题讨论】:

您发现anytime 可能只是切换到anydate?同样的包装,同样的味道:) 【参考方案1】:

as.Date 将采用一个字符串,即使它包含时间。无需在确定日期之前将其删除。

as.Date("2020-12-31 16:00:00 PST")
# [1] "2020-12-31"

使用您的代码和数据

df = df %>% 
  mutate(date = as.Date(time))

#    id                    time       date
# 1   1 2020-12-31 16:00:00 PST 2020-12-31
# 2   2 2020-12-31 16:00:00 PST 2020-12-31
# 3   3 2020-12-31 16:00:00 PST 2020-12-31
# 4   4 2020-12-31 16:00:01 PST 2020-12-31
# 5   5 2020-12-31 16:00:01 PST 2020-12-31
# 6   6 2020-12-31 16:00:02 PST 2020-12-31
# 7   7 2020-12-31 16:00:03 PST 2020-12-31
# 8   8 2020-12-31 16:00:03 PST 2020-12-31
# 9   9 2020-12-31 16:00:03 PST 2020-12-31
# 10 10 2020-12-31 16:00:03 PST 2020-12-31

【讨论】:

以上是关于试图从时间戳 R 中提取日期的主要内容,如果未能解决你的问题,请参考以下文章

从时间戳中提取时间?

pandas:从时间戳中提取日期和时间

pandas:从时间戳中提取日期和时间

无法从 BigQuery 中的时间戳中提取日期

如何从java中的字符串时间戳中提取日期和时间

如何从 H2 中的时间戳列中提取日期