[英]How to get grouped weighted standard deviation in R?
我正在嘗試使用 dplyr package 在 R 中獲取一些摘要統計信息。 盡管加權平均值很容易獲得,但我在加權 SD 方面遇到了困難。 通常我使用 radiant.data package,但對於這個分析,我想通過兩個分組變量(時間和性別)獲得標准偏差。
下面是我用來獲取加權平均值的代碼:
group_by(time, gender) %>%
summarise(Mean=mean(x, na.rm=T, wt=weights))
通常,我將以下代碼用於加權 SD:
weighted.sd(df$x, df$weights, na.rm = T)
但是,我無法讓 function 在 dplyr 中工作。 有任何想法嗎?
此外,有什么方法可以組合函數,以便我可以看到兩列,一列用於加權平均值,另一列用於加權 SD?
謝謝!
您沒有提供可重現的示例。 但是,使用 radiant.data 中的weighted.sd()
radiant.data
進行分組和匯總似乎在dplyr
管道中工作正常:
library(tidyverse)
mtcars |>
group_by(vs, cyl) |>
summarize(w_mean = weighted.mean(x = mpg, wt = hp),
w_sd = radiant.data::weighted.sd(x = mpg, wt = hp))
#> `summarise()` has grouped output by 'vs'. You can override using the `.groups`
#> argument.
#> # A tibble: 5 × 4
#> # Groups: vs [2]
#> vs cyl w_mean w_sd
#> <dbl> <dbl> <dbl> <dbl>
#> 1 0 4 26 0
#> 2 0 6 20.6 0.646
#> 3 0 8 15.1 2.39
#> 4 1 4 26.7 4.48
#> 5 1 6 19.1 1.39
由代表 package (v2.0.1) 於 2022 年 8 月 2 日創建
請注意, radiant.data
掩蓋了 Tidyverse 包中的許多功能,這可能會導致其他問題,因此我直接使用weighted.sd
function 而不是加載 package。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.