转换列值

时间:2017-08-01 09:38:23

标签: r

您好我的问题是:我的专栏有月,季,年等,例如

Time

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

我想创建另一个专栏:如果它是一个月那么它应该成为2015-03-01的第一天,如果它是一年它应该成为2017-01的第一天-01,如果是1/4,那么2017-01-01,如果是第2季那么2017-04-01,如果是第3季然后是2017-07-01,如果第4季则是2017-10-2017。感谢

1 个答案:

答案 0 :(得分: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


如果它解决了您的问题,请不要忘记告诉我们:)