str_extract_all 小数
str_extract_all with decimal numbers
我有这个数据框 (DF1)
structure(list(ID = 1:3, Temperature = c("temp 37.8 37.6", "37,8 was body temperature", "110 kg and 38 temp")), class = "data.frame", row.names = c(NA, -3L))
ID Temperature
1 "temp 37.8 37.6"
2 "37,8 was body temperature"
3 "110 kg and 38 temp"
还有这个模式
Pattern <- paste(c("temp", "Temperature"),collapse="|")
我想要一个新列,其中包含带十进制数的数字字符串。
小数点字符为“,”和“.”。
所以我想得到这个
ID Temperature Number
1 "temp 37.8 37.6" c(37.8,37.6)
2 "37,8 was body temperature" 37,8
3 "110 kg and 38 temp" c(110, 38)
我试过了
mutate(Number = ifelse(grepl(Pattern, Temperature), str_extract_all(Temperature, "\s(.*[0-9])$ | \s(,*[0-9])$"), "no"))
但是这个正则表达式只给我一个空字符串。
您可以使用:
stringr::str_extract_all(DF1$Temperature, '\d+([.,]\d+)?')
#[[1]]
#[1] "37.8" "37.6"
#[[2]]
#[1] "37,8"
#[[3]]
#[1] "110" "38"
其中:
\d+
- 一位或多位数字后跟
可选
[.,]
点或逗号
\d+
- 一个或多个数字。
我有这个数据框 (DF1)
structure(list(ID = 1:3, Temperature = c("temp 37.8 37.6", "37,8 was body temperature", "110 kg and 38 temp")), class = "data.frame", row.names = c(NA, -3L))
ID Temperature
1 "temp 37.8 37.6"
2 "37,8 was body temperature"
3 "110 kg and 38 temp"
还有这个模式
Pattern <- paste(c("temp", "Temperature"),collapse="|")
我想要一个新列,其中包含带十进制数的数字字符串。 小数点字符为“,”和“.”。
所以我想得到这个
ID Temperature Number
1 "temp 37.8 37.6" c(37.8,37.6)
2 "37,8 was body temperature" 37,8
3 "110 kg and 38 temp" c(110, 38)
我试过了
mutate(Number = ifelse(grepl(Pattern, Temperature), str_extract_all(Temperature, "\s(.*[0-9])$ | \s(,*[0-9])$"), "no"))
但是这个正则表达式只给我一个空字符串。
您可以使用:
stringr::str_extract_all(DF1$Temperature, '\d+([.,]\d+)?')
#[[1]]
#[1] "37.8" "37.6"
#[[2]]
#[1] "37,8"
#[[3]]
#[1] "110" "38"
其中:
\d+
- 一位或多位数字后跟
可选
[.,]
点或逗号
\d+
- 一个或多个数字。