在r

时间:2016-07-16 11:41:41

标签: r datetime

我有一个数据集,对于每个观察,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

感谢。

3 个答案:

答案 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几乎可以处理日期部分之间的分隔符。