【发布时间】:2021-05-28 15:49:58
【问题描述】:
这是我的数据框的第一行(带有列名):
site, date, value
TEES, 20000314, 315
如您所见,日期没有分隔符(- 或 /),所以我不能使用 as.Date。因此,我需要这样的东西:
TEES, 2000-03-14, 315
我该怎么做?大概是sub
【问题讨论】:
这是我的数据框的第一行(带有列名):
site, date, value
TEES, 20000314, 315
如您所见,日期没有分隔符(- 或 /),所以我不能使用 as.Date。因此,我需要这样的东西:
TEES, 2000-03-14, 315
我该怎么做?大概是sub
【问题讨论】:
这行得通吗:
as.Date(gsub('(\\d{4})(\\d{2})(\\d{2})','\\1-\\2-\\3',df$date))
[1] "2000-03-14"
数据:
df
site date value
1 TEES 20000314 315
【讨论】:
您可以使用 lubridate 包中的 ymd 函数。这将自动添加“-”来分隔 YYYY-MM-DD 并将其转换为 Date。
library(lubridate)
ymd(df$date)
# "2000-03-14"
【讨论】:
你可以使用as.Date你只需要指定tryFormats参数:
as.Date("20000314", tryFormats = c("%Y%m%d"))
[1] "2000-03-14"
默认是尝试这些格式:c("%Y-%m-%d", "%Y/%m/%d"),它与您当前的结构不匹配,因此您必须告诉它如何读取您的结构。
【讨论】:
我们可以从anytime使用anydate
library(anytime)
anydate("20000314")
#[1] "2000-03-14"
【讨论】: