簡體   English   中英

在一個 dplyr 鏈中匯總然后匯總_at?

[英]summarise and then summarise_at in one dplyr chain?

我有一個集群數據的數據框,我按集群聚合它以提供摘要數據。

我想創建一個基於簇數 n() 的新列,然后對 var 列表進行均值和求和:

# works fine
nums <- c("mpg", "disp", "cyl")
mtcars %>% group_by(carb) %>% summarise(cnt = n())

看起來像這樣:

# A tibble: 6 x 2
   carb   cnt
  <dbl> <int>
1     1     7
2     2    10
3     3     3
4     4    10
5     6     1
6     8     1

# does not work, returns error message:

> Error in summarise_impl(.data, dots) :    Evaluation error: object
> 'disp' not found. In addition: Warning message: In mean.default(mpg) :
> argument is not numeric or logical: returning NA

nums <- c("mpg", "disp", "cyl")
mtcars %>% group_by(carb) %>% summarise(cnt = n()) %>% summarise_at(.vars = nums,
                                                                    funs(mean, sum))

目標是獲得上面的 tbl,但新列 cnt 是每個組中的觀察計數。

我們可以mutate以通過 'carb' 創建 'cn't,然后在執行summarise_at之前添加 'cnt' 作為分組變量

mtcars %>% 
   group_by(carb) %>% 
   mutate(cnt = n()) %>%
   group_by(cnt, add = TRUE) %>% 
   summarise_at(.vars = nums, funs(mean, sum))

暫無
暫無

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

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