我试图创建一个基本上将data.frame拆分成几个较小数据帧的函数:
split_save <- function(df){
dataframes <- vector("list",length(df))
dates <- unique(df$date)
for (i in 1:length(dates)){
dataframes[[i]] <- df[df$date==dates[i],]
}
for(i in 1:length(dataframes)){
write.csv(dataframes[[i]], paste0(i,".csv"))
}
}
我的问题是,我无法弄清楚如何将较大的data.frame拆分为较小的数据帧,其中拆分点基于周数,并将其名称写为相应的一周,作为较小的data.frame:
示例数据:
df <- data.frame(date = seq(as.Date('2016-01-04'),as.Date('2018-01-
12'), by = 1),
some_data = length(t))
date some_data
2016-01-04 2
2016-01-05 2
2016-01-06 2
2016-01-07 2
2016-01-08 2
2016-01-09 2
2016-01-10 2
2016-01-11 2
2016-01-12 2
2016-01-13 2
2016-01-14 2
2016-01-15 2
2016-01-16 2
2016-01-17 2
将.csv写入某个目录后所需的输出:
data_for_week1.csv
date some_data
2016-01-04 2
2016-01-05 2
2016-01-06 2
2016-01-07 2
2016-01-08 2
2016-01-09 2
2016-01-10 2
data_for_week2.csv
date some_data
2016-01-11 2
2016-01-12 2
2016-01-13 2
2016-01-14 2
2016-01-15 2
2016-01-16 2
2016-01-17 2
欣赏任何见解!
答案 0 :(得分:2)
将我的评论转化为答案......
以下是按年度组合分割数据的方法:
dfsplit <- split(df, format(df$date, "%Y-%W"))
然后你可以遍历结果列表的名称并将每个表写入csv文件:
lapply(names(dfsplit), function(x)
write.csv(dfsplit[[x]], paste0("dir/data_for_week_", x, ".csv")))