簡體   English   中英

在 R 中使用 weighted_mean 和 summarise_at 時出錯(dplyr 包)

[英]Error in using weighted_mean with summarise_at in R (dplyr package)

我正在嘗試使用時出現以下錯誤消息weighted_mean作為聚合函數summarise_at在R( dplyr包):

summarise_impl(.data, dots) 中的錯誤:評估錯誤:“x”和“w”必須具有相同的長度。

這是我的代碼:

a = data.frame(snapshot_date = c("1-Jan-2016", "1-Jan-2016", "1-Feb-2016", "1-Feb-2016"),
           rate = c(0.75, 0.2, 0.5, 0.1),
           newrate = c(0.9, 0.4, 0.6, 0.3),
           balance = c(1000,2000,3000,4000))
b = a %>%
  group_by(snapshot_date)

summarise_at(.tbl = b,
            .vars = c("rate", "newrate"),
           .funs = weighted.mean, 
           w = b$balance, na.rm = FALSE)

當我刪除權重參數時,我不再收到錯誤消息並且得到正確(未加權)的結果,如下所示:

summarise_at(.tbl = b,
         .vars = c("rate", "newrate"),
         .funs = weighted.mean, 
         na.rm = FALSE)

產量:

# A tibble: 2 x 3
  snapshot_date  rate newrate
  <fct>         <dbl>   <dbl> 
1 1-Feb-2016    0.300   0.450
2 1-Jan-2016    0.475   0.650
> 

嘗試使用權重時我做錯了什么?

不幸的是,不確定它到底出了什么問題,但這樣就可以了

b = a %>%
  group_by(snapshot_date) %>%
  summarise_at(vars(rate, newrate), funs(weighted.mean(., balance)))

# A tibble: 2 x 3
  snapshot_date  rate newrate
  <fct>         <dbl>   <dbl>
1 1-Feb-2016    0.271   0.429
2 1-Jan-2016    0.383   0.567

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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