![](/img/trans.png)
[英]What's the most efficient way to use movingFun in large rasters time series?
[英]Time series: What's the most efficient way to write code for subsets?
我有两个数据框
DF1
time x y state
... ... ... CA
... ... ... MA
... ... ... TX
... ... ... MA
... ... ... CA
... ... ... IL
DF2
time x y state
... ... ... MA
... ... ... NY
... ... ... MA
... ... ... TX
... ... ... CA
... ... ... CA
然后,我有了一些代码,在这些代码中,我可以汇总每月值,重命名列,将数据与另一个列表进行匹配,然后将df1和df2合并为大约50行代码中的一个。 到目前为止,我不考虑state
。
但是,我需要为几个美国州创建合并数据框的子集。 除了复制/粘贴用于df1和df2的代码并将df1和df2替换为df1_CA,df2_MA等之外,还有其他更优雅的方法吗?
环? 面板数据?
一种选择是使用data.table包进行分组分析。
# transform your data.frame to data.table
dt1 <- as.data.table(df1)
dt2 <- as.data.table(df2)
# e.g. grouping values on state level
dt1[, sum(y), by=state]
# this will accumulate all y values by state
如果您不想在代码中替换df名称,则可以定义一个函数:
# define the function
accumulate <- function(df){
dt <- as.data.table(df)
return(dt[, sum(y), by=state])
}
# and call it
accumulate(df1)
accumulate(df2)
而不是在所有data.frames上使用for循环或类似方法,可以使用一种有效遍历数据结构(例如列表)的apply函数之一
# alternatively define a list of data.frames and then iterate over the list
my.dfs <- list(df1,df2)
lapply(my.dfs, accumulate(df))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.