2
我有一個日期列表(df2)和一個包含每週日期和當天度量(df1)的單獨數據框。我需要的是在樣本日期前一年(df2)內輸出一個數據框,並用這個數據框進行測量。使用具有不同行數的lapply函數創建數據框
eg1 <- data.frame(Date=seq(as.Date("2008-12-30"), as.Date("2012-01-04"), by="weeks"))
eg2 <- as.data.frame(matrix(sample(0:1000, 79*2, replace=TRUE), ncol=1))
df1 <- cbind(eg1,eg2)
df2 <- as.Date(c("2011-07-04","2010-07-28"))
類似的問題我以前問(Outputting various subsets from one data frame based on dates)得到的回答是有效的每日數據(這裏有行的平衡數量)通過此功能...
output <- as.data.frame(lapply(df2, function(x) {
df1[difftime(df1[,1], x - days(365)) >= 0 & difftime(df1[,1], x) <= 0, ]
}))
然而,每週數據行數不平均意味着這是不可能的。當'as.data.frame'函數被刪除時,代碼可以正常工作,但是我得到了一個數據框列表。 我想要做的就是追加NA對含有較少的觀察那些dataframes的一排,這樣我可以輸出一個數據幀,這樣我就可以申請功能簡單地忽略NA值如..
df2 <- as.Date(c("2011-01-04","2010-07-28"))
output <- as.data.frame(lapply(df2, function(x) {
df1[difftime(df1[,1], x - days(365)) >= 0 & difftime(df1[,1], x) <= 0, ]
}))
col <- c(2,4)
output_two <- output[,col]
Mean <- as.data.frame(apply(output_two,2,mean), na.rm = TRUE)
謝謝你Akrun,工作完美。 –
@JamesWhite很高興知道它的工作原理 – akrun