R:如何创建多个分割数据矩阵?

时间:2015-06-30 11:28:20

标签: r

我正在使用贸易数据(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

1 个答案:

答案 0 :(得分:0)

没有数据就很难测试,但你可以试试这个:

do.call(rbind,import_YI_lap)