gpt4 book ai didi

r - 如何使用 ddply 向数据框中添加列?

转载 作者:行者123 更新时间:2023-12-04 01:52:32 25 4
gpt4 key购买 nike

我有一个如下所示的数据框:

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 的列到这个包含计算加权平均值所需的加权因子的数据帧。必须为 site 的每个组合导出该加权因子。和 date .

我使用的方法是首先构建一个计算权重因子的函数:
> weight <- function(dil){
dil/sum(dil)
}

然后对 site 的每个组合应用该函数和 date
> df$wt <- ddply(df,.(date,site),.fun=weight)

但我收到此错误消息:
Error in FUN(X[[1L]], ...) : 
only defined on a data frame with all numeric variables

最佳答案

你快到了。修改您的代码以使用 transform功能。这允许您向 ddply 内的 data.frame 添加列:

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

关于r - 如何使用 ddply 向数据框中添加列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7573144/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com