将列标识为data.frame中的日期

时间:2013-05-30 16:03:24

标签: r

我在data.frame中有一列字符,我希望将其识别为日期:

例如我试过:

 dat <- c("2013.05.30","2013.05.29","2013.05.28","2013.05.27")

 dat1 <- gsub(".", "-", dat)

但是这会回来:

“----------”“----------”“----------”“---------- “ 虽然我想要

“2013年5月30日”, “2013年5月29日”, “2013年5月28日”, “2013年5月27日”

我很感激你的帮助。

2 个答案:

答案 0 :(得分:3)

简单地将他们强迫约会会不会更容易?

as.Date(dat,format = "%Y.%m.%d")

gsub无效的原因是因为.在正则表达式中具有特殊含义。您可以通过指定fixed = TRUE

按字面解释

答案 1 :(得分:2)

在你的gsub通话中,“。”是你的模式。 “。”模式中的符号表示“任何字符”,因此您正在使用gsub来用短划线替换每个字符。正确的gsub调用需要转义句点,因此R知道这是一个字面句点:

d1 <- gsub("\\.", "-", dat)

此语法将使gsub用破折号替换所有句点。但实际上,这不是你想要的,你想要日期。你需要像as.Date这样使用:

d2 <- as.Date(dat, format="%Y.%m.%d")

您想要的解决方案只会将您的字符串转换为其他字符串格式。使用as.Date告诉R将值视为日期而不是字符串。

plot(d1)

会产生错误(因为当你要求它只绘制字符串时,R不理解你想要的东西),而是:

plot(d2)

生成索引与星期几的关系图(因为R识别出您有时间序列数据)。