我有一个这样的数据框:
df <- data.frame(v1 = c('jan1', 'jan2', 'jan3', 'jan4', 'feb1', 'feb2', 'mar1', 'mar2', 'mar3'),
v2 = rnorm(9))
我想在对数据进行分组后对其进行汇总。我希望它们按中的数字分组v1
,即一组将是(jan1,feb1,mar1),另一组将是(jan2,feb2,mar2),依此类推。
我试过了,但是不起作用:
df %>% group_by(str_detect(v1, '1')) %>% summarise(meanp = mean(v2),
medianp = median(v2))
我们可以做的
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
的group_by
和gsub
部分创建基于可变的非字母字符分组变量v1
,看?regex
。
数据
set.seed(1)
df <- data.frame(v1 = c('jan1', 'jan2', 'jan3', 'jan4', 'feb1', 'feb2', 'mar1', 'mar2', 'mar3'),
v2 = rnorm(9))
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句