stringr2
sunqi
2020/8/13
概述
str_detect:用来匹配字符中的字母,返回布尔值 str_count():匹配字符,返回匹配的个数
正文
代码语言:javascript复制rm(list=ls())
library(stringr)
x <- c("sunqi", "wanglong", "lisi")
str_detect(x, "i")
代码语言:javascript复制## [1] TRUE FALSE TRUE
代码语言:javascript复制# str_count():匹配字符,返回匹配的个数
str_count(x,"i")
代码语言:javascript复制## [1] 1 0 2
代码语言:javascript复制# 返回位置str_count
str_view_all(x, "qi")
- sunqi
- wanglong
- lisi
# 提取匹配内容str_extract
str_extract(c("sunqi zhangsan sunlia wangwu"),pattern ="sun|zhang")
代码语言:javascript复制## [1] "sun"
代码语言:javascript复制# str_extract_all返回全部字符
str_extract_all(c("sunqi zhangsan lisi wangwu"),pattern ="sun|zhang")
代码语言:javascript复制## [[1]]
## [1] "sun" "zhang"
代码语言:javascript复制# 替换第一个匹配值
str_replace(x, "[sn]", "-")
代码语言:javascript复制## [1] "-unqi" "wa-glong" "li-i"
代码语言:javascript复制# 替换所有值
str_replace_all(x, "[sn]", "-")
代码语言:javascript复制## [1] "-u-qi" "wa-glo-g" "li-i"
代码语言:javascript复制# 拆分字符串
x <- "i like apple and banana"
# 返回为一个个单词
str_split(x, " ")
代码语言:javascript复制## [[1]]
## [1] "i" "like" "apple" "and" "banana"
备注:举个例子,暂时不对stringr更新
综合例子
代码语言:javascript复制library(tidyr)
data <- tibble(
x = c("1234", "B246", "217C", "2357f", "21WD4")
)
str_match_all(x, "\d")
代码语言:javascript复制## [[1]]
## [,1]
代码语言:javascript复制# 求tibble中每个单元格中数字的和
library(tidyverse)
data %>%
# 匹配字符中的所有数字,返回列表
mutate(num = str_match_all(x, "\d")) %>%
# 将返回的列表还原为数据框
unnest(num) %>%
# 对提取的的数字转换为数字
mutate_at(vars(num), as.numeric) %>%
# 按照x分组计算和
group_by(x) %>%
#求和
summarise(sum = sum(num))
代码语言:javascript复制## # A tibble: 5 x 2
## x sum
## <chr> <dbl>
## 1 1234 10
## 2 217C 10
## 3 21WD4 7
## 4 2357f 17
## 5 B246 12
结束语
随着数据量越来越大,R语言对于内存的需求也越来越大,好像SAS是基于硬盘数据运算的。另外stringr不打算更新了,用不到。
love&peace