我正在尝试编写一个函数,根据不同的时间长度(月数)为我分配数据帧;并创建一个新的数据帧列表,这些数据帧都是略有不同的子集。我希望能够将此功能应用于任何数据。
以下是我正在尝试做的一个例子。
month <- c(0:35)
product<- c(112:147)
index <- rnorm(36)
originaldata <- data.frame(month, product, index)
sset <- function(df, time, length, windows) {
#Create the subset rule
subfun <- function(x,y,z) { x[x[[y]] >= z & x[[y]] <= z+length-1,] }
#Apply this rule to dataframe
regdfs <- lapply(1:windows,
function(j) {subfun(x = df, y = time, z = j - 1) })
}
#Apply sset function to create dataframe subsets
camsets <- sset(df = originaldata, time = originaldata$month, length = 13, windows = 24)
当我运行此代码时,我收到各种错误消息。
这是我原始问题的链接,有助于回答(感谢Carl),Create a list of a list of dataframes, by subsetting a list of dataframes in R 。这次我正在尝试编写一个函数来执行此操作,而我可能正在做一些愚蠢的事情。
非常感谢任何帮助,谢谢。
答案 0 :(得分:0)
使用waterling建议的拆分
month <- c(0:35)
product <- c(112:147)
index <- rnorm(36)
originaldata <- data.frame(month, product, index)
createsubsets <- function(df, length, windows) {
cutoffs <-seq(0,windows*length,length)
originaldata$group <- cut(originaldata$month, cutoffs,include.lowest=TRUE )
split(originaldata, originaldata$group)
}
camsets <- createsubsets(df, 13, 24)