这个答案的灵感来自于在 Python 中使用 dict 到 replicate switch behavior。与其使用本机开关,不如创建一个 list,它由月份名称和数字等价物的值索引:
months<-list("January"="01","February"="02","March"="03","April"="04","May"="05","June"="06","July"="07","August"="08","September"="09","October"="10","November"="11","December"="12")
有了这个列表,可以直接使用sapply 来创建转换:
new.dates<-sapply(as.character(old.data$dateoccurred),function(x) paste(strsplit(x," ")[[1]][3],month.convert(strsplit(x," ")[[1]][1]),sub(",","",strsplit(x," ")[[1]][2]),sep="-"))
现在我们已经按照我想要的方式格式化了数据。
head(new.data$dateoccurred)
[1] 2004-04-09 2004-09-01 2005-02-07 2005-02-19 2005-02-22 2005-03-11
264 Levels: 2004-04-09 2004-09-01 2005-02-07 2005-02-19 2005-02-22 2005-03-11 2005-03-15 2005-03-19 2005-05-13 2005-06-28 2005-06-29 2005-07-05 ... 2009-12-22