R - 按结果汇总

时间:2018-04-22 22:59:50

标签: r dplyr aggregate

我有这样的反复:

(.*)

如何将其聚合以获得类似的结果:

tibble(
  type = c("A", "B", "A", "A", "B", "B", "B"),
  place = c(1, 1, 1, 1, 1, 2, 2)
)

2 个答案:

答案 0 :(得分:1)

tidyverse方式。由于我们知道没有B,因此我不需要在replace_na中包含B = NA

library(dplyr)
library(tidyr)

df1 <- tibble(type = c("A", "B", "A", "A", "B", "B", "B"),
              place = c(1, 1, 1, 1, 1, 2, 2))

df1 %>% 
  group_by(place, type) %>% 
  summarise(n = n()) %>% 
  spread(type, n) %>% 
  replace_na(list(A = 0, B = 0)) %>% 
  rename(n_A = A, n_B = B)

# A tibble: 2 x 3
  place   n_A   n_B
  <dbl> <dbl> <dbl>
1    1.    3.    2.
2    2.    0.    2.

答案 1 :(得分:1)

您可以使用table

table(df1$place,df1$type)

    A B
  1 3 2
  2 0 2
相关问题