我目前正在开发一个由60个时间序列组成的数据库。我实际上有两个数据集:每个数据集对应于一个特定的变量(A或B)。请找到下面的例子(即使我的真实数据库包含60个名字和51年)变量A
year name1 name2 name3
2002 39 56 31
2003 37 31 52
2004 51 58 51
2005 70 59 68
2006 41 43 37
2007 43 31 53变量B:
year name1 name2 name3
2002 56 18 24
2003 72 52 59
2004 32 30 33
2005 33 34 51
2006 47 46 19
2007 19 32 25 我希望实现一个循环,为每个名称创建以下矩阵。
ie:代表name1
year var1 var2
2002 39 56
2003 37 72
2004 51 32
2005 70 33
2006 41 47
2007 43 19首先,我做了以下工作(因为我只对这两个数据集中出现的系列感兴趣)
names=as.matrix(intersect(colnames(df.var_A),colnames(df.var_B)))
DF.VAR_A=subset(df.var_A,select=noms)
DF.VAR_B=subset(df.var_B,select=noms)那么我想得到与每个名字对应的系列(A和B)
我得到了年岁:
YEAR=DF.VAR_A[,"year"]正如预期的那样,我发现:
DF.VAR_A[,"name1"]
[1] 39 37 51 70 41 43现在,我想为每个名称创建一个数据,该名称由年份组成,值对应于变量A,值对应于变量B。
我从名字向量中取下“年份”。
NAMES=names[-c(1)]然后我试过:
DATA=NULL
for (i in 1:length(NAMES)){
DATA[i]=cbind(YEAR,DF.VAR_A[,i],DF.VAR_B[,i])
}但以下警告如下: 1:在DATAi = cbind(Année,DF.VAR_A,i,DF.VAR_B,i)中:
总之,我想得到3个不同的数据格式(每个名称1),然后能够应用一个循环(我已经编程了)。我想“自动”循环到每一个意甲。我希望一切都清楚..。
有什么想法吗?
非常感谢。
发布于 2013-08-06 13:50:31
在我看来,你只是把事情放在一起。这样做非常简单,每个子集都将是它自己的list元素(但是如果您需要更强大的编程功能,还有很多其他方法可以做到):
lapply( 2:ncol(varA) , function(x) cbind( Year = varA[,1] , A = varA[ , x], B = varB[,x] ) )
[[1]]
Year A B
[1,] 2002 39 56
[2,] 2003 37 72
[3,] 2004 51 32
[4,] 2005 70 33
[5,] 2006 41 47
[6,] 2007 43 19
[[2]]
Year A B
[1,] 2002 56 18
[2,] 2003 31 52
[3,] 2004 58 30
[4,] 2005 59 34
[5,] 2006 43 46
[6,] 2007 31 32
[[3]]
Year A B
[1,] 2002 31 24
[2,] 2003 52 59
[3,] 2004 51 33
[4,] 2005 68 51
[5,] 2006 37 19
[6,] 2007 53 25https://stackoverflow.com/questions/18081957
复制相似问题