0

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

例如我试过:

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

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

但这会返回:

“ - - - - - “ “ - - - - - “ “ - - - - - “ “ - - - - - “ 当我想

"2013-05-30","2013-05-29","2013-05-28","2013-05-27"

我会很感激你的帮助。

4

2 回答 2

3

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

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

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

于 2013-05-30T16:07:59.160 回答
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 识别出您有时间序列数据)。

于 2013-05-30T16:09:18.883 回答