r语言 - 使用格式为Date 的其他字符解析字符串



我有一个字符串变量,我想解析为类Date。除了日,年和月,该格式还有其他字符,如分隔符(, ),字母和撇号(u''),如下所示:

"u'9', u'2005', u'06'"

我试过了

as.Date(my_data$date, format = '%d %Y %m')

。但它只产生缺失值。我希望 R 将u''解释为 unicode 指示符,但它没有。

如何剥离所有这些未使用的字符,以使此"u'9', u'2005', u'06'"变成简单的"9 2005 06"

您无需去除转换规范中未使用的字符。在?as.Date中,format参数指向?strptime("否则,处理是通过strptime")。在 ?strptime * 的详细信息部分中,我们发现:

"格式字符串中不属于转换规范的任何字符都将按字面解释"

也就是说,在 as.Dateformat参数中,您不仅可以包含转换规范(由 % 引入),还可以包含"其他字符":

此外,从?as.Date

按照

指定格式处理字符串:忽略任何尾随字符

因此,这有效:

as.Date("(u'9', u'2005', u'06')", format = "(u'%d', u'%Y', u'%m")
# [1] "2005-06-09"

试试这个:

as.Date(gsub("[u',()]","",my_data$date), format = '%d %Y %m')

单个字符串的示例:

d <- "(u'9', u'2005', u'06')"
d <- gsub("[u',()]","",d)
d.date <- as.Date(d, "%d %Y %m")

结果:

d.date
[1] "2005-06-09"

如果是字符类,可以试试:

library(lubridate)
test <- c("u'9'", "u'2005'", "u'06'")
dym(paste(gsub("u|'", "", test), collapse = "/"))
[1] "2005-06-09 UTC"

在这里,我使用 lubridate 将删除"u"和 ' 字符的字符串转换为时间格式。我在paste中使用的折叠字符是任意的,lubridate几乎可以处理任何内容作为日期部分之间的分隔符。

相关内容

  • 没有找到相关文章

最新更新