我正在使用贸易数据(FAO),我想将其转化为矩阵(按项目和年份)。因此,我做了一个分裂:
# import is the original df
import_YI <- split(import, list(import$Item, import$Year))
import_YI_lap <- lapply(seq_along(import_YI), function(x) as.data.frame(import_YI[[x]])[, 1:11])
,数据看起来像这样(你可以在最后找到测试数据):
[[1]]
RC PC Item Year Value
Argentina Chile Almonds 1996 1108
Algeria Spain Almonds 1996 1
....
[[2]]
....
[[3]]
....
[[n]]
我使用cast
函数(下面)在2012年为杏仁创建矩阵:
# import_almonds2012 is a test subset from import df (with import values for almonds in 2012)
RCPC <- cast(RC ~ PC, data =import_almonds2012, value = "Value")
现在我的问题:我怎么能从import_YI_lap
df做所有项目/年(~100项和17年!!)的矩阵?我的问题是我不知道(1)如何操作此df([[1]], [[2]]...
)中的等级/对象。或者有更好的方法来分割数据或将分裂的df保存到对象中? (2)如何创建所有需要的矩阵而不需要处理代码行。的循环?如果是的话,怎么做?
这里有一个测试数据集:
import<- data.frame(RC=c("DE", "IT", "USA"),
PC = c("BRA", "ARG"),
Item = c("Almonds", "Apples"),
Year = c(1996,1997,1998),
Value = c(1,5,3,2,8,3))
import_YI <- split(import, list(import$Item, import$Year))
import_YI_lap <- lapply(seq_along(import_YI), function(x) as.data.frame(import_YI[[x]])[, 1:5])
import_YI_lap
答案 0 :(得分:0)
没有数据就很难测试,但你可以试试这个:
do.call(rbind,import_YI_lap)