问题:有没有办法在 group_by()
之前引用原始数据集或(最好)链中的数据集根本吗?
nrow(mtcars)
32(但我们都知道)
> mtcars %>% group_by(cyl) %>% summarise(count = n())
# A tibble: 3 x 2
cyl count
<dbl> <int>
1 4 11
2 6 7
3 8 14
太棒了。
mtcars %>%
group_by(cyl) %>%
summarise(count = n(),
prop = n()/SOMETHING)
我知道我可以输入 nrow(mtcars)
在那里,但这只是一个 MRE。这不是更复杂的操作链中的一个选项。
编辑:我过于简化了 MRE。我知道“。”但我实际上希望能够将临时小标题传递给另一个函数(在摘要调用中),因此下面的分配解决方案正是我所追求的。谢谢。
最佳答案
我们可以使用add_count
来计算数量并在原始数据框中创建一个新列。如果我们需要更复杂的操作,我们可以进一步使用 mutate
。
library(dplyr)
library(tidyr)
mtcars %>%
group_by(cyl) %>%
add_count()
# # A tibble: 32 x 12
# # Groups: cyl [3]
# mpg cyl disp hp drat wt qsec vs am gear carb n
# <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <int>
# 1 21 6 160 110 3.9 2.62 16.5 0 1 4 4 7
# 2 21 6 160 110 3.9 2.88 17.0 0 1 4 4 7
# 3 22.8 4 108 93 3.85 2.32 18.6 1 1 4 1 11
# 4 21.4 6 258 110 3.08 3.22 19.4 1 0 3 1 7
# 5 18.7 8 360 175 3.15 3.44 17.0 0 0 3 2 14
# 6 18.1 6 225 105 2.76 3.46 20.2 1 0 3 1 7
# 7 14.3 8 360 245 3.21 3.57 15.8 0 0 3 4 14
# 8 24.4 4 147. 62 3.69 3.19 20 1 0 4 2 11
# 9 22.8 4 141. 95 3.92 3.15 22.9 1 0 4 2 11
# 10 19.2 6 168. 123 3.92 3.44 18.3 1 0 4 4 7
# # ... with 22 more rows
关于r - 使用 dplyr 和 group_by,有没有办法引用原始(完整)数据集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58677224/