簡體   English   中英

有沒有辦法根據在 R 中用逗號分隔值的列對數據進行分組?

[英]Is there a way to group data based on a column that separates values with commas in R?

假設有數據框 A:

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

有沒有辦法匯總 B 列中每個逗號分隔字母的數據? 例如,像這樣得到它們的平均值:

   group   mean
1  gr1     2
2  gr2     2.5
3  class1  3

這可以通過 tidyr 中的函數 separator_rows 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

在一個選項base Rstrsplit列“B”上建立一個list ,然后使用tapply ,獲得mean的的rep licated“A”值,其中該基團是unlist版拆分值

lst1 <- with(df1, strsplit(B, ",\\s+"))
tapply(rep(df1$A, lengths(lst1)), unlist(lst1), FUN = mean)
# class1    gr1    gr2 
#   3.0    2.0    2.5 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM