我想优化我的程序,根据日期顺序插入数据框列。 这是合约。我有一个包含两列的数据框,例如
d <- data.frame(x=c("2012-01-01","2013-01-01","2014-01-01","2015-01-01","2016-01-01","2017-01-01","2018-01-01","2019-01-01"),
y=c(70, 80, 90, 80, 75 ,70, 75, 60))
我想在几个月内按日期序列扩展此数据框
xx <- seq(as.Date(x[1]),as.Date(x[length(x)]),by="months")
然后在此序列上插入我的第二列。 这就是我做的,
# initialize the final data frame
r <- data.frame(matrix(NA,length(xx),2))
# copy the data I know
for (i in 1:length(x))
r[which(xx==as.Date(d$x[i])),] <- d[i,]
# set the date sequence on the first column
r[,1] <- as.character(xx,"%Y/%m/%d")
# interpolate the values on the second column
r[,2] <- as.numeric(na.approx(r[,2]))
有更好,更优雅的方式吗?也许只是一枪。