我有一个包含 275 个不同站点和 43 年季节性数据(10 月到次年 4 月,不需要 5 月到 9 月的数据)和 6 个变量的数据框,这是一个只有一个名为 value 的变量的数据框的小示例:
data <- data.frame(station=rep(1,6), year=rep(1969,6), month=c(10,10,10,10,11,11),day=c(1,8,16,24,1,9),value=c(1:6))
我需要的是用每日日期(例如:1:8)和每行的值填充 8 天的平均值,它看起来像:
data1 <- data.frame(station=rep(1,40), year=rep(1969,40), month=c(rep(10,31),rep(11,9)),day=c(1:31,1:9),value=rep(c(1/7,2/8,3/8,4/8,5/8,6/8),c(7,8,8,8,8,1)))
我写了一些糟糕的代码并在网站上搜索,但不幸的是没有成功,请帮助或更好的想法将不胜感激。
station.date <- as.Date(with(data, paste(year, month, day, sep="-")))
for (i in 1:length(station.date)){
days <- as.numeric(station.date[i+1]-station.date[i]) #not working
data <- within(data, days <- c(days,1))
}
rows <- rep(1:nrow(data), times=data[ ,data$days])
rows <- ifelse(rows > 10, 0, rows) #get rid of month May to Sept
data <- data[rows, ]
data <- within(data, value1 <- value/days)
data <- within(data, dd <- ?) #don't know to change the repeated days to real days