我有一个字符串变量,我想解析为类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.Date
的format
参数中,您不仅可以包含转换规范(由 %
引入),还可以包含"其他字符":
此外,从?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
几乎可以处理任何内容作为日期部分之间的分隔符。