R语言group_by()下summarize()函数输出message
在R种使用group_by()函数时输出了这样一条message,意思是说summarize()的输出未分组,也就是输出是没有组属性的。

帮助文档
查看

根据summarize的参数提示,可以看到
当未指定
分析
简单来说,如果参数
下面来做一个实验,取不同的
(1) 不指定
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | > trans_loan_lab %>% group_by(label) %>% + summarise(rmean = mean(rInternal), + fmean = mean(frequency), + mmean = mean(monetary)) `summarise()` ungrouping output (override with `.groups` argument) # A tibble: 8 x 4 label rmean fmean mmean <chr> <dbl> <dbl> <dbl> 1 一般保持客户 -26 9 102599 2 一般发展客户 -16.9 5.78 67715. 3 一般价值客户 -15.0 10.1 64330. 4 一般挽留客户 -85.4 2.48 22326. 5 重要保持客户 -36.8 10.7 267037. 6 重要发展客户 -18.0 6.12 139477. 7 重要价值客户 -9.96 11.8 282704. 8 重要挽留客户 -44.4 5.90 166351. |
此时会输出message:
(2)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | > trans_loan_lab %>% group_by(label) %>% + summarise(rmean = mean(rInternal), + fmean = mean(frequency), + mmean = mean(monetary), .groups= "drop") # A tibble: 8 x 4 label rmean fmean mmean <chr> <dbl> <dbl> <dbl> 1 一般保持客户 -26 9 102599 2 一般发展客户 -16.9 5.78 67715. 3 一般价值客户 -15.0 10.1 64330. 4 一般挽留客户 -85.4 2.48 22326. 5 重要保持客户 -36.8 10.7 267037. 6 重要发展客户 -18.0 6.12 139477. 7 重要价值客户 -9.96 11.8 282704. 8 重要挽留客户 -44.4 5.90 166351. |
此时输出结果与(1)中相同,但是并没有输出message,因为我们已经指定在summarize后drop掉group属性。
(3)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | > trans_loan_lab %>% group_by(label) %>% + summarise(rmean = mean(rInternal), + fmean = mean(frequency), + mmean = mean(monetary), .groups= "keep") # A tibble: 8 x 4 # Groups: label [8] label rmean fmean mmean <chr> <dbl> <dbl> <dbl> 1 一般保持客户 -26 9 102599 2 一般发展客户 -16.9 5.78 67715. 3 一般价值客户 -15.0 10.1 64330. 4 一般挽留客户 -85.4 2.48 22326. 5 重要保持客户 -36.8 10.7 267037. 6 重要发展客户 -18.0 6.12 139477. 7 重要价值客户 -9.96 11.8 282704. 8 重要挽留客户 -44.4 5.90 166351. |
“keep”下保持与输入数据相同的分组结构,可以看到此时输出中就有组属性,第6行有
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | > trans_loan_lab %>% group_by(label) %>% + summarise(rmean = mean(rInternal), + fmean = mean(frequency), + mmean = mean(monetary), .groups= "keep") %>% str() tibble [8 x 4] (S3: grouped_df/tbl_df/tbl/data.frame) $ label: chr [1:8] "一般保持客户" "一般发展客户" "一般价值客户" "一般挽留客户" ... $ rmean: num [1:8] -26 -16.9 -15 -85.4 -36.8 ... $ fmean: num [1:8] 9 5.78 10.13 2.48 10.7 ... $ mmean: num [1:8] 102599 67715 64330 22326 267037 ... - attr(*, "groups")= tibble [8 x 2] (S3: tbl_df/tbl/data.frame) ..$ label: chr [1:8] "一般保持客户" "一般发展客户" "一般价值客户" "一般挽留客户" ... ..$ .rows: list<int> [1:8] .. ..$ : int 1 .. ..$ : int 2 .. ..$ : int 3 .. ..$ : int 4 .. ..$ : int 5 .. ..$ : int 6 .. ..$ : int 7 .. ..$ : int 8 .. ..@ ptype: int(0) ..- attr(*, ".drop")= logi TRUE |
取消message
如果不想设定
1 | options(dplyr.summarise.inform = FALSE) |
注意,这里不要写成
感兴趣也可以参考
【1】Stackoverflow