R 集成数据

R 集成数据,r,merge,R,Merge,我有一个大数据框,如下所示,它是一个大数据框的子集 tree=data.frame(INVYR=tree$INVYR, DIA=tree$DIA,PLOT=tree$PLOT,SPCD=tree$SPCD, D.2=tree$D.2, BA.T=tree$BA.T) 我试图做的是计算每年每块地块的总BA.T(在随后的几年中重新测量地块)。我是通过 x<-aggregate(tree$BA.T,list(tree$INVYR,tree$PLO

我有一个大数据框,如下所示,它是一个大数据框的子集

tree=data.frame(INVYR=tree$INVYR,
            DIA=tree$DIA,PLOT=tree$PLOT,SPCD=tree$SPCD,
            D.2=tree$D.2, BA.T=tree$BA.T)
我试图做的是计算每年每块地块的总BA.T(在随后的几年中重新测量地块)。我是通过

x<-aggregate(tree$BA.T,list(tree$INVYR,tree$PLOT),FUN=sum)

x$PLOT<-x$Group.2

x<- x[with(x, order(Group.1,Group.2)), ]
其中,第1组为INVYR,第2组为地块,x为每年每块地块的总BA.T。到目前为止,这个效果很好。这就是我的问题开始的地方。然后,我想将其重新集成到我的原始tree data.frame中。如果我通过绘图合并数据,它不会考虑年份和四极数据集,因为有四次重新测量。我无法运行if语句,因为数据集的长度不相等。我希望使用的data.frame是

tree=data.frame(INVYR, DIA, PLOT, SPCD, D.2, BA.T, x) 
其中x是给定INVYR的总BA.T和该记录的曲线图

任何想法都将不胜感激。谢谢

编辑

INVYR=rbind(1982198219821982198219951995199519951995200020002000)
PLOT=rbind(1,1,2,2,3,1,1,2,2,3,1,1,2,2,3)
BA.T=rbind(.1,2,3,4,2,3,5,8,3,6,7,2,1,1,1.02)
树=数据帧(INVYR,PLOT,BA.T)
头(树)

x上的解决方案是使用包
重塑2

library(reshape2)
melt(data=tree,id.vars=c('INVYR','PLOT')) ## Notice the choice of the id!the keys!
 dcast(tree.m,formula=...~variable,fun.aggregate=sum)
  INVYR PLOT BA.T
1  1982    1 0.30
2  1982    2 0.70
3  1982    3 0.20
4  1995    1 0.80
5  1995    2 1.10
6  1995    3 0.60
7  2000    1 0.90
8  2000    2 1.10
9  2000    3 1.02

没有适当的示例数据很难理解
INVYR=rbind(1982,1982,1982,1982,1982,1995,1995,1995,1995,1995,2000,2000,2000,2000,2000)
PLOT=rbind(1,1,2,2,3,1,1,2,2,3,1,1,2,2,3)
BA.T=rbind(.1,.2,.3,.4,.2,.3,.5,.8,.3,.6,.7,.2,.1,1,1.02)
tree=data.frame(INVYR,PLOT,BA.T)
head(tree)
x<-aggregate(tree$BA.T,list(tree$INVYR,tree$PLOT),FUN=sum)
x$PLOT<-x$Group.2
x$INVYR<-x$Group.1
x<- x[with(x, order(Group.1,Group.2)), ]
head(x)
library(reshape2)
melt(data=tree,id.vars=c('INVYR','PLOT')) ## Notice the choice of the id!the keys!
 dcast(tree.m,formula=...~variable,fun.aggregate=sum)
  INVYR PLOT BA.T
1  1982    1 0.30
2  1982    2 0.70
3  1982    3 0.20
4  1995    1 0.80
5  1995    2 1.10
6  1995    3 0.60
7  2000    1 0.90
8  2000    2 1.10
9  2000    3 1.02