2015-06-09 65 views
1

有两列的矩阵:年和月转换变量日期R中

dates.m 
1492 April 
1492 August 
1492 October 

如何将这两个变量转换成日期格式变量(例如mm/yyyy)?谢谢。

+2

日期还需要一天。所以,如果你有一个data.frame,'as.Date(粘贴(do.call(paste,df1),'01'),'%Y%B%d')' – akrun

+0

或者你可以使用'sapply'将上述函数应用于矩阵的所有元素。 – user1436187

+0

我已添加日期数据,现在它是一个包含3个变量(年,日,月)的数据框。但是你展示的功能创建了一个NAs向量。 – DeffRoll

回答

1

如何:

dates.m<-data.frame(dates.m,stringsAsFactors=F) 
dfl=split(dates.m,1:nrow(dates.m)) 
dates.m$data=do.call(rbind,lapply(dfl,function(rn) 
paste(as.Date(paste(paste(rn,collapse = "/"),"01",sep="/"),"%Y/%b/%d"),sep=""))) 
dates.m$data 
[,1]   
1 "1492-04-01" 
2 "1492-08-01" 
3 "1492-10-01" 
1

当谈到日期我喜欢与lubridate包工作。这里是解决这个问题的示例代码,如果您有一列包含数据(假设您的数据以年 - 月 - 日的方式排序 - 否则更改函数名称中字母的顺序):

require(lubridate) 
df$date<-ymd(df$dates.m) 

或如果你有他们在单独的列:

require(lubridate) 
require(stringr) 
df$date<-ymd(str_c(as.character(df$Year),as.character(df$Month), 
        as.character(df$Day),sep="-"))