【发布时间】:2018-02-17 20:11:33
【问题描述】:
我有下面的季度数据表,想为每一行生成一个日期类型的新列。
Year,Quarter,Sales
2008,1,1.703
2008,2,0.717
2008,3,6.892
2008,4,4.363
2009,1,3.793
2009,2,5.208
2009,3,7.367
2009,4,8.737
2010,1,8.752
2010,2,8.398
这是我尝试过的
quarters <- c('-03-31', '-06-30', '-09-30', '-12-31')
gen_date <- function(row) {
year <- row[1]
quarter <- row[2]
date <- paste(toString(year), quarters[quarter], sep='')
date <- as.Date((date), format="%Y-%m-%d")
return(date)
}
df$Date <- apply(df, 1, gen_date)
但是,结果列 df$Date 不是日期,而是 int。
Year Quarter Sales Date
1 2008 1 1.703 13969
2 2008 2 0.717 14060
3 2008 3 6.892 14152
4 2008 4 4.363 14244
5 2009 1 3.793 14334
6 2009 2 5.208 14425
7 2009 3 7.367 14517
8 2009 4 8.737 14609
【问题讨论】:
-
date <- as.Date(date), format="%Y-%m-%d")抛出错误。它应该是date <- as.Date(date, format="%Y-%m-%d") -
是的,我把代码复制错了对不起。我运行它 as.Date((date), format="%Y-%m-%d")
-
as.Date(zoo::as.yearqtr(paste(d$Year, d$Quarter, sep = "-")), frac = 1)。相关:Convert quarter/year format to a date