如何在 R 中解析或转换日期范围(对于字段/单元格)



例如,

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

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

解决方案将

  1. 务实并产生一个带有结束日期的向量或
  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

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

如果你不需要间隔,那么你可以尝试使用 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

最新更新