Dplyr唯一计数和同一数据帧中的一般计数

时间:2018-03-09 19:34:01

标签: r dplyr

有没有办法在一行代码中执行此操作,从而产生一个数据帧而不是两个,如下所示:

df1 <- mtcars %>% group_by(gear, carb) %>%
distinct(gear, cyl, am) %>%
summarise(UniqCnt = n()

df2 <- mtcars %>% group_by(gear, carb) %>%
summarise(Cnt = n())

我试过这个

attempt1 <- mtcars %>% (group_by(gear, carb) %>%
    distinct(gear, cyl,am) %>%
    summarise(UniqCnt = n()))  %>% 
  (group_by(gear, carb) %>%
    summarise(Cnt = n()))

但它不起作用。我可以对这两个人进行争辩,但我不愿意这样做。

提前谢谢你。

2 个答案:

答案 0 :(得分:4)

您可以使用n_distinct()中的summarize()功能。例如

mtcars %>% group_by(gear, carb) %>% 
  summarize(UniqCnt = n_distinct(am), Cnt=n())

#     gear  carb UniqCnt   Cnt
#    <dbl> <dbl>   <int> <int>
#  1     3     1       1     3
#  2     3     2       1     4
#  3     3     3       1     3
#  4     3     4       1     5
#  5     4     1       1     4
#  6     4     2       2     4
#  7     4     4       2     4
#  8     5     2       1     2
#  9     5     4       1     1
# 10     5     6       1     1
# 11     5     8       1     1

答案 1 :(得分:1)

这个怎么样:

df1 <- mtcars %>%
          group_by(gear, carb) %>%
          summarise(UniqCnt = n_distinct(gear, cyl, am),
                    Cnt = n())