按R中的不同变量进行分组和汇总时,统计分类变量的出现次数

按R中的不同变量进行分组和汇总时,统计分类变量的出现次数,r,dplyr,R,Dplyr,我有一个表df,看起来像这样: a <- c(10,20, 20, 20, 30) b <- c("u", "u", "u", "r", "r") c <- c("a", "a", "b", "b", "b") df <- data.frame(a,b,c) a这里有一个使用小tablemagic的方法: df %>% group_by(c) %>% summarise(a_mean = mean(a), b_li

我有一个表df,看起来像这样:

a <- c(10,20, 20, 20, 30)
b <- c("u", "u", "u", "r", "r")
c <- c("a", "a", "b", "b", "b")
df <- data.frame(a,b,c)

a这里有一个使用小
table
magic的方法:

df %>%
    group_by(c) %>%
    summarise(a_mean = mean(a),
              b_list = paste(names(table(b)), table(b), collapse = ', '))

# A tibble: 2 x 3
  c     a_mean b_list  
  <fct>  <dbl> <chr>   
1 a       15.0 r 0, u 2
2 b       23.3 r 2, u 1
df%>%
组别(c)%>%
总结(a_平均值=平均值(a),
b_list=粘贴(名称(表(b)),表(b),折叠=','))
#一个tibble:2x3
c a_是指b_列表
1 a 15.0 r 0,u 2
2 b 23.3 r 2,u 1

这里有一个使用小
表的方法
魔术:

df %>%
    group_by(c) %>%
    summarise(a_mean = mean(a),
              b_list = paste(names(table(b)), table(b), collapse = ', '))

# A tibble: 2 x 3
  c     a_mean b_list  
  <fct>  <dbl> <chr>   
1 a       15.0 r 0, u 2
2 b       23.3 r 2, u 1
df%>%
组别(c)%>%
总结(a_平均值=平均值(a),
b_list=粘贴(名称(表(b)),表(b),折叠=','))
#一个tibble:2x3
c a_是指b_列表
1 a 15.0 r 0,u 2
2 b 23.3 r 2,u 1

这里是另一个使用
重塑2
的解决方案。输出格式可能更便于使用,b的每个值都有自己的列和出现次数

out1 <- dcast(df, c ~ b, value.var="c", fun.aggregate=length)

  c r u
1 a 0 2
2 b 2 1

out2 <- df %>% group_by(c) %>% summarise(a_m = mean(a))

# A tibble: 2 x 2
       c      a_m
  <fctr>    <dbl>
1      a 15.00000
2      b 23.33333

df2 <- merge(out1, out2, by=c)

  c r u      a_m
1 a 0 2 15.00000
2 b 2 1 23.33333
out1%总结(a_m=平均值(a))
#一个tibble:2x2
c_m
1 a 15.00000
2 b 23.33333

df2这里是另一个使用
重塑2
的解决方案。输出格式可能更便于使用,b的每个值都有自己的列和出现次数

out1 <- dcast(df, c ~ b, value.var="c", fun.aggregate=length)

  c r u
1 a 0 2
2 b 2 1

out2 <- df %>% group_by(c) %>% summarise(a_m = mean(a))

# A tibble: 2 x 2
       c      a_m
  <fctr>    <dbl>
1      a 15.00000
2      b 23.33333

df2 <- merge(out1, out2, by=c)

  c r u      a_m
1 a 0 2 15.00000
2 b 2 1 23.33333
out1%总结(a_m=平均值(a))
#一个tibble:2x2
c_m
1 a 15.00000
2 b 23.33333
df2