r - 如何根据R中的字符向量从df中提取部分字符串
问题描述
我想根据字符向量从 df 中的字符串变量中提取数字。
# sample data
numbers <- as.character(seq(1000, 9900, 100))
df <- tibble(numbers)%>%
rename(string = 1)%>%
mutate(string = paste("some text", string, "another text"))
在实际数据中,每一行中的字符串具有不同的长度。我的目标是创建一个新变量,其中包含从“字符串”变量中提取的数字。我对 R 很陌生。通常我会做这样的事情。
df2 <- df %>%
mutate(number = case_when(str_detect(string, "1000")==T ~ "1000",
str_detect(string, "1100")==T ~ "1100",
#don't want to type this 88 times more!
TRUE~string))
我想到了某种循环。我试过这个,但它没有用。
for(i in numbers){
df2 <- mutate(df, number = case_when(str_detect(string, i)==T ~ i,
TRUE~string))
}
虽然我明白,为什么我的循环没有达到预期的结果,但我想不出任何其他解决方案。我将不胜感激。
解决方案
嗨,这应该是您正在寻找的:
library(stringr)
df$num <- str_extract(df$string, '\\d\\d\\d\\d') # first pattern
df$num <- str_extract_all(df$string, '\\d\\d\\d\\d') # all patterns
推荐阅读
- php - 将 woocommerce 中的产品数量拆分到单独的行中
- mongodb - 使用 mongodb go driver 聚合计算和过滤管道
- reactjs - 当 API 没有该字段时的 setState
- javascript - 如何在更改源的同时保持视频高度
- scala - Spark:线程“主”java.util.ServiceConfigurationError 中的异常:org.apache.spark.scheduler.ExternalClusterManager
- python - Python AttributeError:部分初始化的模块
- docker - 当 HOST 具有时区时,Docker 上的 JWT 令牌身份验证验证失败
- javascript - 除非我在 Head Tag 中使用 PHP 包含,否则单独的 JS 脚本不适用于 jQuery
- postgresql - 如何在 Postgres 中将 JSON 字符串转换为数字/浮点数?
- json - 如何在没有任何中介的情况下将数据直接发送到 MongoDB?