我有一个数据集,对于每个观察,date
变量都有(u'9', u'2005', u'06')
种格式。
我真的不明白如何将其转换为r中的date
格式,即使这是character
类。所以这个:
as.Date(my_data$date, format = '%d %Y %m')
仅产生缺失值。这很明显,因为还有其他字符,例如(
,)
和u''
。但是我希望r将u''
解释为unicode指示符,但它没有。
如何删除所有未使用的字符,以便此(u'9', u'2005', u'06')
只变为9 2005 06
?
感谢。
答案 0 :(得分:4)
您无需剥离转换规范中未使用的字符。在?strptime
的详细信息部分,我们发现:
“格式字符串中的[a]字符不是转换规范的一部分,按字面解释”
也就是说,在format
的{{1}}参数中,您不仅可以包含转换规范(由as.Date
引入),还可以包含“其他字符”:
此外,来自%
:
根据指定格式的需要处理字符串:忽略任何尾随字符
因此,这有效:
?as.Date
答案 1 :(得分:1)
试试这个:
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"
答案 2 :(得分:0)
如果是字符类,您可以尝试:
library(lubridate)
test <- c("u'9'", "u'2005'", "u'06'")
dym(paste(gsub("u|'", "", test), collapse = "/"))
[1] "2005-06-09 UTC"
在这里,我使用lubridate
将我删除“u”的字符串和'字符转换为时间格式。
我在paste
中使用的 collapse 字符是任意的,lubridate
几乎可以处理日期部分之间的分隔符。