【发布时间】:2012-06-27 05:30:33
【问题描述】:
在工作区中,我有 48 个数据框:
zbp1994f, zbp1994m, zbp1994r
zbp1995f, zbp1995m, zbp1995r
......
zbp2009f, zbp2009m, zbp2009r
在每一帧中,都有一个组变量(例如,组)。我只为一个数据帧,即 zbp1994f,按组计算统计量(Moran's I):
library(ape)
moranfn <- function(dta) {
distinv <- -1/as.matrix(dist(cbind(dta$longi, dta$lati)))
diag(distinv) <- 0
Moran_result <- data.frame(Moran.I(dta$myvariable, distinv))
}
library(plyr)
Moran_result_1994f <- ddply(zbp1994f,"group",moranfn)
这给了我 Moran_result_1994f 数据框,其中包含按组的统计信息。
group stat1 stat2 sd p-value
g1 0.049 -0.01 0.012 2.55e-06
g2 0.122 -0.05 0.041 2.45e-08
......
我的目标是完成所有数据框的工作,并制作一个面板数据集:
group year stat1 stat2 sd p-value
g1 1994 ..... ..... .. .....
g1 1995 ..... ..... .. .....
g1 1996 ..... ..... .. .....
......
g1 2009 ..... ..... .. .....
g2 1994 ..... ..... .. .....
......
我想知道如何在一年中 (1994:2009) 和 c("f","m","r") 循环初始过程。
【问题讨论】:
-
创建一个嵌套的数据框列表
list(1994 = list(f = zpb1994f, m = zbp1994m, r = zpb1994r), 1995 = list(f = ...))等,然后使用reshape2和id.var = names(zpb1994f)融合它 -
我会在该列表对象上执行
ls(pattern = "zbp"),然后执行ldply。