有没有一种方法可以根据R中用逗号分隔值的列对数据进行分组?

时间:2020-10-06 10:44:55

标签: r dplyr summary

说有数据框A:

      build:my-toolchain --crosstool_top=//my-toolchain:toolchain
      build --config=my-toolchain

是否可以汇总B列中每个逗号分隔字母的数据? 例如,像这样获取它们的平均值:

   A  B
1  1  gr1, gr2
2  3  class1, gr1
3  4  gr2

2 个答案:

答案 0 :(得分:4)

使用tidyr的函数separate_rows()可以轻松完成此操作:

library(tidyverse)

dat <-
  tibble(A = c(1, 3, 4),
         B = c("gr1, gr2", "class1, gr1", "gr2"))

dat %>%
  separate_rows(B, sep = ", ") %>% 
  group_by(B) %>% 
  summarize(mean = mean(A))


# A tibble: 3 x 2
  B       mean
  <chr>  <dbl>
1 class1   3  
2 gr1      2  
3 gr2      2.5

答案 1 :(得分:1)

base R中的一个选项,在列'B'上带有strsplit,以创建一个list,然后使用tapply,获得{ {1}}将“ A”值分组,其中该组是mean个拆分值

rep