如何进行乱数求和?

问题描述 投票:0回答:2

我的数据不整齐,如下例所示:

label <- c("a", "a.1", "2.a", "b", "c")

values <- c(10, 11, 12, 13, 14)

df1 <- data.frame(label, values)

df1

输出如下:

  label values
1     a     10
2   a.1     11
3   2.a     12
4     b     13
5     c     14

我需要对包含不同位置的字母的部分匹配求和,以便获得以下输出:

  letter sum
1      a  33
2      b  12
3      c  14

这不是一个简单的分割,因为“字母”(字符串)可以位于值中的任何位置。关于这个主题有什么想法吗?预先感谢。

r string sum match tidy
2个回答
0
投票

使用

stringr::str_extract()
提取并按字母分组:

library(dplyr)
library(stringr)

df1 %>%
  group_by(letter = str_extract(label, "[a-z]")) %>%
  summarize(sum = sum(values))

结果:

# A tibble: 3 × 2
  letter   sum
  <chr>  <dbl>
1 a         33
2 b         13
3 c         14

0
投票

怎么样:

df2 <- df1 %>%
  mutate(letter = str_remove_all(label, "[^[:alpha:]]")) %>% 
  summarise(.by = letter, sum = sum(values))

# ----------
> df2
  letter sum
1      a  33
2      b  13
3      c  14
© www.soinside.com 2019 - 2024. All rights reserved.