我有这个df:

structure(list(CN = c("BR", "BR", "BR", "PL", "PL", "PL", 
"BR", "BR", "BR", "BR", "PL", "PL", "PL"), Year = c(2019, 
2019, 2019, 2019, 2019, 2019, 2020, 2020, 2020, 2020, 2020, 2020, 
2020), Squad = c("A", "B", "C", "A", "B", "C", "C", "F", "G", 
"I", "D", "E", "F"), X = c(1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 
1), Y = c(1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1)), row.names = c(NA, 
-13L), class = c("tbl_df", "tbl", "data.frame"))

我想总结一下(x+y和阵容总数之和),按CN和年份分组;在相同的 struct 中,添加一列,其中包含仅按CN分组的团队的唯一/不同值的计数.

看起来是这样的:

structure(list(CN = c("BR", "BR", "PL", "PL"), Year = c(2019, 
2020, 2019, 2020), Sum = c(12, 14, 12, 12), n_squad = c(3, 4, 
3, 3), n_squad_distinct = c(6, 6, 6, 6)), row.names = c(NA, -4L
), class = c("tbl_df", "tbl", "data.frame"))

谢谢

推荐答案

我们可以通过在"squad"上应用n_distinct来创建按"CN"分组的"n\u squad\u distinct"列,然后添加"Year"和"n\u squad\u distinct"作为分组变量,并执行summarise

library(dplyr)
df %>%
   group_by(CN) %>%
   mutate(n_squad_distinct = n_distinct(Squad)) %>% 
   group_by(n_squad_distinct, Year, .add = TRUE) %>%
   summarise(Sum = sum(X + Y), n_squad = n_distinct(Squad), .groups = 'drop')

-输出

# A tibble: 4 × 5
  CN    n_squad_distinct  Year   Sum n_squad
  <chr>            <int> <dbl> <dbl>   <int>
1 BR                   6  2019    12       3
2 BR                   6  2020    14       4
3 PL                   6  2019    12       3
4 PL                   6  2020    12       3

R相关问答推荐

使用ggcorrplot在相关性矩阵上标注supertitle和index标签

带有gplot 2的十字舱口

R Tidymodels textercipes-使用spacyR进行标记化-如何从生成的标记列表中删除标点符号

如何计算R数据集中每个女性的子元素数量?

根据多个条件增加y轴高度以适应geom_text标签

当月份额减go 当月份额

如何在R中对深度嵌套的tibbles中的非空连续行求和?

标识R中多个列中缺少的唯一值

根据文本字符串中的值粘贴新列

如何通过匹配R中所有可能的组合来从宽到长旋转多个列?

R -在先前group_by级别汇总时获取最大大小子组的计数

有没有可能用shiny 的书签恢复手风琴面板?

扩展R中包含列表的数据框

将具有坐标列表列的三角形转换为多个多边形

ggplot斜体轴刻度标签中的单个字符-以前的帖子建议不工作

使用函数从R中的列中删除标高

在ggplot2图表中通过端点连接点

通过匹配另一个表(查找表)中的列值来填充数据表,并在另一个变量上进行内插

在一个multiplot中以非对称的方式在R中绘制多个图

即使使用相同的种子,mtry值也取决于TuneGrid范围