2017-08-01 68 views
0

你好,我的问题是:我有一个列,每月,季度和年如转换列值

Time 

2017 Q1 
2017 Q2 
2017 
2016 
Mar-07 
Apr-07 

我想创造另一列这样的:如果是一个月,那么它应该成为月2015年3月1日的第一天,如果是一年它建议立即进行删除成为了第一天如果是季度1那么2017-01-01,如果是季度2那么2017-04-01,如果季度3那么2017-07-01,如果季度4那么2017-10 -2017。谢谢

+0

,想必,你用什么软件来做到这一点? – hd1

+0

“动物园”包将有所帮助。请参阅https://stackoverflow.com/questions/31071733/convert-quarter-year-format-to-a-date – Jean

回答

0

希望这有助于!

library(zoo) 
df <- data.frame(time=c("2017 Q1", "2017 Q2", "2017", "2016", "Mar-07", "Apr-07")) 

df$time <- sapply(df$time, function(x)gsub("^[a-zA-Z]{3}-\\d{2}$",as.Date(paste0('01-', x), format='%d-%b-%y'),x)) 
df$time <- sapply(df$time, function(x)gsub("^\\d{4}$",as.Date(paste0('01-01-', x), format='%d-%m-%Y'),x)) 
df$time <- sapply(df$time, function(x)gsub("^\\d{4}\\s\\w{2}$",as.Date(as.yearqtr(x, format = "%Y Q%q")),x)) 
df 

输出是:

 time 
2017-01-01 
2017-04-01 
2017-01-01 
2016-01-01 
2007-03-01 
2007-04-01 


不要忘了让我们知道是否能解决你的问题:)

+0

Prem它帮助我。非常感谢你 ! – dede

+0

我还有另外一个问题,我可以制作colum“时间”日期,以便当我将它写入excel时,我会将它识别为日期吗?谢谢 – dede

+0

很高兴它帮助。对于日期类型转换,您可以使用'?strptime'。类似于'strptime(df $ time,format =“%y-%m-%d”,tz =“GMT”)' – Prem