有没有一种方法可以根据在R中用逗号分隔值的列对数据进行分组?
假设存在数据帧A:有没有一种方法可以根据在R中用逗号分隔值的列对数据进行分组?,r,dplyr,summary,R,Dplyr,Summary,假设存在数据帧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 使用函数separate_rows()from tidyr可以轻松实现这一点: library(tidyverse) dat <- tibble(A = c(1,
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
使用函数
separate_rows()
from tidyr可以轻松实现这一点:
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
库(tidyverse)
dat%
单独的_行(B,sep=“,”)%>%
组别(B)%>%
汇总(平均值=平均值(A))
#一个tibble:3x2
B是指
1第13类
2 GR12
3 GR22.5
这可以通过函数从tidyr中分离行()
轻松完成:
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
库(tidyverse)
dat%
单独的_行(B,sep=“,”)%>%
组别(B)%>%
汇总(平均值=平均值(A))
#一个tibble:3x2
B是指
1第13类
2 GR12
3 GR22.5
在base R
中的一个选项,在列“B”上使用strsplit
创建列表
,然后使用tapply
,获得rep
应用的“a”值的平均值,其中组是未列出的分割值
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
lst1在base R
中的一个选项,在列“B”上使用strsplit
创建列表
,然后使用tapply
,获得rep
应用的“a”值的平均值,其中组是未列出的
分割值
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
lst1