-5

例如,

dates <- c("25–27 Oct", "25 Oct", "24–25 Oct", "23–24 Oct", "23–24 Oct", "22–23 Oct")

将它们转换为日期向量的最佳方法是什么?一个理想的结果是我们可以在数据框中使用它们来绘制时间序列等。

解决方案将要么

  1. 务实并产生一个带有结束日期的向量或
  2. 列出两个向量中的开始和结束日期。
4

2 回答 2

2

这个怎么样?如果日期不是间隔,例如"25 Oct"您也可以设置fromto相同的值,但这取决于您将如何处理输出。

do.call(rbind, lapply(dates, function(str){
    if(grepl("–", str)){
        data.frame(from=as.Date(sub("–\\d+", "", str), "%d %b"),
                   to=as.Date(sub("\\d+–", "", str), "%d %b"))
    } else {
        data.frame(from = as.Date(str, "%d %b"), to=NA)
    }
}))

输出

        from         to
1 2013-10-25 2013-10-27
2 2013-10-25       <NA>
3 2013-10-24 2013-10-25
4 2013-10-23 2013-10-24
5 2013-10-23 2013-10-24
6 2013-10-22 2013-10-23
于 2013-10-31T13:46:22.063 回答
1

你到底想存储什么?间隔或特定日期,例如间隔的中间?

如果您不需要间隔,那么您可以尝试使用 gsub 或/和 strptime() 获取日期

http://stat.ethz.ch/R-manual/R-devel/library/base/html/strptime.html

例子:

> s="29 Mai"
> strptime(s,format="%d %b")
[1] "2013-05-29"

记得设置适当的语言环境时间/日期来处理 %b

于 2013-10-31T13:39:07.163 回答