r - 使用 dplyr 和 group_by,有没有办法引用原始(完整)数据集?

标签 r dplyr tidyr

问题:有没有办法在 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/

相关文章:

r - 使用频率列将宽转换为长

regex - 在第一个遇到的数字上通过 dplyr 使用单独的 (tidyr) 分隔列

r - data.table 是否实现了基于二分查找的快速范围子集?那是什么语法?

r - 使用 dplyr 计算行之间的差异时间

r - 使用不同长度的向量与 tidyr 分开

R cummax函数与NA

r - 多值列的 dplyr 中的 Pivot_longer

r - R 或 PostgreSQL 中的最小变异性检查

Rmarkdown 将输出文件定向到目录中

image - 如何在 R 中为每个绘图代码生成多个文件格式?