2017-08-01 64 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