首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >集成数据

集成数据
EN

Stack Overflow用户
提问于 2013-01-24 23:32:27
回答 1查看 72关注 0票数 0

我有一个很大的数据帧,如下所示,它是一个较大数据帧的子集。

代码语言:javascript
复制
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 (在随后的几年中重新测量该块地)。我是通过..。

代码语言:javascript
复制
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)), ]

这给了我数据帧..。

代码语言:javascript
复制
x=data.frame(Group.1,Group.2,x,PLOT) 

其中Group.1是INVYR,Group.2是曲线图,x是每年每幅曲线图的总BA.T。到目前为止,这个方法运行得很好。这就是我的问题所在。然后我想把它集成回我原来的树data.frame中。如果我通过曲线图合并数据,它不会考虑年份和四极数据集,因为需要四次重新测量。我不能运行if语句,因为数据集的长度不相等。我想要容纳的data.frame是

代码语言:javascript
复制
tree=data.frame(INVYR, DIA, PLOT, SPCD, D.2, BA.T, x) 

其中x是给定INVYR和该记录的绘图的总BA.T。

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

编辑

代码语言:javascript
复制
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)
EN

回答 1

Stack Overflow用户

发布于 2013-01-25 02:31:54

解决方案是使用reshape2包。

代码语言:javascript
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14504967

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档