簡體   English   中英

如何在 R 中獲得分組加權標准差?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM