gpt4 book ai didi

r - 找到多列的加权平均值?

转载 作者:行者123 更新时间:2023-12-04 11:03:28 25 4
gpt4 key购买 nike

这是公式:

𝟎。 𝟐 × 𝑹 + 𝟎。 𝟑 × 𝑭 + 𝟎。 𝟓 × 𝑴

我想从代表 的 3 列中找到加权平均值R , 传真

我试过这个:

vvv$rfm_score=weighted.mean(x=c(vvv$rank_recency, vvv$rank_freq, vvv$rank_monetary_v)
,w=c(.2,.3,.5))

但是它给出的列对于所有行都是相同的?

为了澄清起见,每列都有一个从 1 到 5 的数字。稍后,根据需要使用每列中的一列计算加权平均值,如公式中所示。

问题肯定出在我使用 weighted.mean 的方式上功能,但在尝试了不同的方法并查找帮助页面后,我可以找到正确的方法。

最佳答案

这是使用 rowwise 的解决方案和 do来自 dplyr :

library(dplyr)
library(magrittr)

set.seed(200)

# Make some data

vvv <- matrix(sample(1:5,replace = TRUE,18),ncol = 3) %>% as.data.frame()

names(vvv) <- c("rank_recency","rank_freq","rank_monetary_v")

head(vvv)
# rank_recency rank_freq rank_monetary_v
# 3 4 1
# 3 1 4
# 3 3 2
# 4 2 2
# 4 3 3
# 5 4 1

vvv$rfm_score <- vvv %>%
rowwise() %>% # compute for each row
do(data.frame(
rfm_score=weighted.mean(
x=c(.$rank_recency,.$rank_freq,.$rank_monetary_v),
w=c(.2,.3,.5)
)
)
) %>%
ungroup() %>% # undo row groups
use_series("rfm_score") # extract the weighted means

head(vvv)
# rank_recency rank_freq rank_monetary_v rfm_score
# 3 4 1 2.3
# 3 1 4 2.9
# 3 3 2 2.5
# 4 2 2 2.4
# 4 3 3 3.2
# 5 4 1 2.7

使用 rowwisedo ,您可以通过 weighted.mean值作为每行的三元素向量。

关于r - 找到多列的加权平均值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48843571/

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