首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用ddply向数据框添加列?

如何使用ddply向数据框添加列?
EN

Stack Overflow用户
提问于 2011-09-28 01:20:24
回答 1查看 10.3K关注 0票数 11

我有一个数据框,看起来像这样:

代码语言:javascript
复制
site   date  var   dil
   1    A    7.4   2 
   2    A    6.5   2
   1    A    7.3   3
   2    A    7.3   3
   1    B    7.1   1
   2    B    7.7   2
   1    B    7.7   3
   2    B    7.4   3

我需要向此数据框添加一个名为wt的列,该列包含计算加权平均值所需的加权因子。对于sitedate的每个组合,都必须推导出该加权因子。

我使用的方法是首先构建一个计算权重因子的函数:

代码语言:javascript
复制
> weight <- function(dil){
                    dil/sum(dil)
                     }

然后将函数应用于sitedate的每种组合

代码语言:javascript
复制
> df$wt <- ddply(df,.(date,site),.fun=weight)

但是我得到了这个错误信息:

代码语言:javascript
复制
Error in FUN(X[[1L]], ...) : 
  only defined on a data frame with all numeric variables
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-09-28 13:54:19

你就快到了。修改代码以使用transform函数。这使您可以在ddply中向data.frame中添加列

代码语言:javascript
复制
weight <- function(x) x/sum(x)

ddply(df, .(date,site), transform, weight=weight(dil))

  site date var dil weight
1    1    A 7.4   2   0.40
2    1    A 7.3   3   0.60
3    2    A 6.5   2   0.40
4    2    A 7.3   3   0.60
5    1    B 7.1   1   0.25
6    1    B 7.7   3   0.75
7    2    B 7.7   2   0.40
8    2    B 7.4   3   0.60
票数 17
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7573144

复制
相关文章

相似问题

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