答案 0 :(得分:0)
count()
调用tally()
,这将创建名为n
的列。请参见tally()
软件包中dplyr
的来源。count()
已包含group_by
。请参见count()
软件包中dplyr
的来源。因此,您的第二个变体已优化。您可以通过group_by
应用到tibble
对象会增加过多的属性/从连接的grouped_df
继承,因此也会增加内存使用量。支持脚本(发给瑞梭鱼):
states_srs <-read.csv("https://raw.githubusercontent.com/clauswilke/dviz.supp/master/data-
raw/US_regions/US_regions.csv")
library(dplyr)
library(microbenchmark)
microbenchmark(w_gr <- states_srs %>% group_by(region) %>% count(), times = 1000L)
# mean time: 2.5 milliseconds
microbenchmark(wout_gr <- states_srs %>% count(region), times = 1000L)
# mean time: 1.7 milliseconds
str(w_gr)
# Classes ‘grouped_df’, ‘tbl_df’, ‘tbl’ and 'data.frame': 4 obs. of 2 variables:
# inherits grouped_df
help("grouped_df")
str(wout_gr)
# Classes ‘tbl_df’, ‘tbl’ and 'data.frame': 4 obs. of 2 variables:
# does not inherit grouped_df