gpt4 book ai didi

r - 在 mutate() 中使用 Weighted.mean() 创建行加权平均值

转载 作者:行者123 更新时间:2023-12-02 18:31:29 27 4
gpt4 key购买 nike

我正在努力创建一个新列,该列应构造为 X 和 Y 变量的行加权平均值。我想使用weighted.mean() 的原因是我需要na.rm 功能来实现我的目的。

我有数据框

library(tidyverse)
seed(2021)

df <- tibble(x = rnorm(10,0,5),
y = rnorm(10,0,10))

我尝试像这样创建新列:

df <- df %>% mutate(z = weighted.mean(cbind(x,y),cbind(rep(c(0.2,0.8),10))))

但是,这会产生一行填充相同的常量,因此我似乎没有指定我需要按行操作。我希望得到指导 - 谢谢!

/F

最佳答案

试试这个方法

df <- tibble(x = rnorm(10,0,5),
y = rnorm(10,0,10))

df$z <- df %>%
rowwise %>%
do(data.frame(
z = weighted.mean(
x = c(.$x, .$y),
w = c(.2, .8)
)
)) %>%
ungroup %>%
magrittr::use_series("z")

df %>% 
mutate( z= df %>%
rowwise %>%
do(data.frame(
z = weighted.mean(
x = c(.$x, .$y),
w = c(.2, .8)
)
)))


x y z
<dbl> <dbl> <dbl>
1 0.176 -1.95 -1.52
2 -3.33 -6.88 -6.17
3 -4.08 0.827 -0.154
4 0.609 1.68 1.47
5 0.327 8.06 6.51
6 -8.63 -2.12 -3.42
7 -4.68 -8.52 -7.76
8 6.49 -13.0 -9.07
9 -2.95 -25.4 -20.9
10 2.78 5.36 4.85

关于r - 在 mutate() 中使用 Weighted.mean() 创建行加权平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69371872/

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