Cyr*_*ian 3 regex string r stringr
我知道关于正则表达式的堆栈溢出有很多问题但我无法通过我见过的可用帮助来完成这一个简单的任务.这是我的数据:
a<-c("Los Angeles, CA","New York, NY", "San Jose, CA")
b<-c("c(34.0522, 118.2437)","c(40.7128, 74.0059)","c(37.3382, 121.8863)")
df<-data.frame(a,b)
df
a b
1 Los Angeles, CA c(34.0522, 118.2437)
2 New York, NY c(40.7128, 74.0059)
3 San Jose, CA c(37.3382, 121.8863)
Run Code Online (Sandbox Code Playgroud)
我想删除除数字和句点之外的所有内容(即删除"c",")"和"(".这是我到目前为止所尝试的内容:
str_replace(df$b,"[^0-9.]","" )
[1] "(34.0522, 118.2437)" "(40.7128, 74.0059)" "(37.3382, 121.8863)"
str_replace(df$b,"[^\\d\\)]+","" )
[1] "34.0522, 118.2437)" "40.7128, 74.0059)" "37.3382, 121.8863)"
Run Code Online (Sandbox Code Playgroud)
不知道剩下要尝试什么.我想最终得到以下结论:
[1] "34.0522, 118.2437" "40.7128, 74.0059" "37.3382, 121.8863"
Run Code Online (Sandbox Code Playgroud)
谢谢.
如果我理解正确,这就是你想要的:
df$b <- gsub("[^[:digit:]., ]", "", df$b)
Run Code Online (Sandbox Code Playgroud)
要么:
df$b <- strsplit(gsub("[^[:digit:]. ]", "", df$b), " +")
> df
a b
1 Los Angeles, CA 34.0522, 118.2437
2 New York, NY 40.7128, 74.0059
3 San Jose, CA 37.3382, 121.8863
Run Code Online (Sandbox Code Playgroud)
或者如果你想将所有"数字"作为数字向量:
as.numeric(unlist(strsplit(gsub("[^[:digit:]. ]", "", df$b), " +")))
[1] 34.0522 118.2437 40.7128 74.0059 37.3382 121.8863
Run Code Online (Sandbox Code Playgroud)