[英]Extracting values from a string in R using regex
我試圖提取此字符串的第一個和第二個數字並將它們存儲在單獨的變量中。
(User20,10.25)
我不知道如何獲取用戶號,然后再獲取他的值。
到目前為止,我設法做到了,但是我不知道如何刪除字符串的其余部分,而只獲取數字。
gsub("\\(User", "", string)
嘗試
str1 <- '(User20,10.25)'
scan(text=gsub('[^0-9.-]+', ' ', str1),quiet=TRUE)
#[1] 20.00 10.25
如果字符串是
str2 <- '(User20-ht,-10.25)'
scan(text=gsub('-(?=[^0-9])|[^0-9.-]+', " ", str2, perl=TRUE), quiet=TRUE)
#[1] 20.00 -10.25
要么
library(stringr)
str_extract_all(str1, '[0-9.-]+')[[1]]
#[1] "20" "10.25"
或使用stringi
library(stringi)
stri_extract_all_regex(str1, '[0-9.-]+')[[1]]
#[1] "20" "10.25"
泰勒·林克 ( Tyler Rinker )的“ qdapRegex”軟件包具有一些對這類東西有用的功能。
在這種情況下,您很可能會對rm_number
感興趣:
library(qdapRegex)
rm_number(x, extract = TRUE)
# [[1]]
# [1] "20" "10.25"
您可以將strsplit
與sub
...一起使用
> sub('\\(User|\\)', '', strsplit(x, ',')[[1]])
[1] "20" "10.25"
匹配所需的上下文可能會更容易。
> regmatches(x, gregexpr('[0-9.]+', x))[[1]]
[1] "20" "10.25"
以下是一種方法:
[^,\)\([A-Z]]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.