dplyr按字符串分组匹配
我有这样一个数据框:dplyr按字符串分组匹配,r,group-by,dplyr,R,Group By,Dplyr,我有这样一个数据框: df <- data.frame(v1 = c('jan1', 'jan2', 'jan3', 'jan4', 'feb1', 'feb2', 'mar1', 'mar2', 'mar3'), v2 = rnorm(9)) 我们能做到 library(dplyr) df %>% group_by(grp = gsub("\\D", "", v1)) %>% summarise(mean_v2 = mean(v2))
df <- data.frame(v1 = c('jan1', 'jan2', 'jan3', 'jan4', 'feb1', 'feb2', 'mar1', 'mar2', 'mar3'),
v2 = rnorm(9))
我们能做到
library(dplyr)
df %>%
group_by(grp = gsub("\\D", "", v1)) %>%
summarise(mean_v2 = mean(v2)) # only for illustration
# A tibble: 4 x 2
# grp mean_v2
# <chr> <dbl>
#1 1 0.0635
#2 2 0.0338
#3 3 -0.130
#4 4 1.60
我们能做到
library(dplyr)
df %>%
group_by(grp = gsub("\\D", "", v1)) %>%
summarise(mean_v2 = mean(v2)) # only for illustration
# A tibble: 4 x 2
# grp mean_v2
# <chr> <dbl>
#1 1 0.0635
#2 2 0.0338
#3 3 -0.130
#4 4 1.60
带有
str\u remove
library(tidyverse)
df %>%
group_by(grp = str_remove(v1, "\\D+")) %>%
summarise(mean_v2 = mean(v2))
# A tibble: 4 x 2
# grp mean_v2
# <chr> <dbl>
#1 1 0.0635
#2 2 0.0338
#3 3 -0.130
#4 4 1.60
库(tidyverse)
df%>%
分组依据(grp=str删除(v1,\\D+))%>%
总结(平均值=平均值(v2))
#一个tibble:4x2
#grp平均值
#
#1 1 0.0635
#2 2 0.0338
#3 3 -0.130
#4 4 1.60
带有str\u remove的选项
library(tidyverse)
df %>%
group_by(grp = str_remove(v1, "\\D+")) %>%
summarise(mean_v2 = mean(v2))
# A tibble: 4 x 2
# grp mean_v2
# <chr> <dbl>
#1 1 0.0635
#2 2 0.0338
#3 3 -0.130
#4 4 1.60
库(tidyverse)
df%>%
分组依据(grp=str删除(v1,\\D+))%>%
总结(平均值=平均值(v2))
#一个tibble:4x2
#grp平均值
#
#1 1 0.0635
#2 2 0.0338
#3 3 -0.130
#4 4 1.60
请提供具有代表性的样本数据。您声明希望按v1
分组,但在您提供的示例数据中v1
仅采用一个值。我也不明白你想用groupby(str\u detect(v1,'1'))
做什么。为什么不干脆分组依据(v1)
?请提供具有代表性的样本数据。您声明希望按v1
分组,但在您提供的示例数据中v1
仅采用一个值。我也不明白你想用groupby(str\u detect(v1,'1'))
做什么。为什么不按(v1)分组呢?