我有一个字符串分隔_,我想摆脱最后两个元素.例如,从A_B_C_D我想要返回A_B,从A_B_C_D_E我想要A_B_C.我试图str_split_fixed从stringr:
my_string <- "A_B_C_D"
x <- str_split_fixed(my_string,"_",3)
Run Code Online (Sandbox Code Playgroud)
但它返回"A" "B" "C_D"的不是 "A_B" "C" "D",否则我可以做head(x,-2)来获得A_B
有没有比这更好的方法
paste(head(unlist(strsplit(my_string,"_")),-2),collapse="_")
Run Code Online (Sandbox Code Playgroud) 我有一个67MM的行data.table,人名和姓氏用空格分隔.我只需要为每个单词创建一个新列.
这是一小部分数据:
n <- structure(list(Subscription_Id = c("13.855.231.846.091.000",
"11.156.048.529.090.800", "24.940.584.090.830", "242.753.039.111.124",
"27.843.782.090.830", "13.773.513.145.090.800", "25.691.374.090.830",
"12.236.174.155.090.900", "252.027.904.121.210", "11.136.991.054.110.100"
), Account_Desc = c("AGUAYO CARLA", "LEIVA LILIANA", "FULLANA MARIA LAURA",
"PETREL SERGIO", "IPTICKET SRL", "LEDESMA ORLANDO", "CATTANEO LUIS RAUL",
"CABRAL CARMEN ESTELA", "ITURGOYEN HECTOR", "CASA CASILDO"),
V1 = c("AGUAYO", "LEIVA", "FULLANA", "PETREL", "IPTICKET",
"LEDESMA", "CATTANEO", "CABRAL", "ITURGOYEN", "CASA"), V2 = c("CARLA",
"LILIANA", "MARIA", "SERGIO", "SRL", "ORLANDO", "LUIS", "CARMEN",
"HECTOR", "CASILDO"), V3 = c(NA, NA, "LAURA", NA, NA, NA,
"RAUL", "ESTELA", NA, NA), `NA` = …Run Code Online (Sandbox Code Playgroud) 我的数据集如下所示
John
Tally
mac
hero
Run Code Online (Sandbox Code Playgroud)
我想删除以""开头的字符串
所以结果变量是
John
Tally
hero
Run Code Online (Sandbox Code Playgroud)
我用过
library(stringr)
which(startsWith(names[,1]," "))
Run Code Online (Sandbox Code Playgroud)
得到""的行
请帮我以任何有效的方式删除它?
我有一个数据框,其中包含一列充满文本的列。我需要捕获某个短语(即“楼层面积”或“楼层面积”)后面的数字(可能是长度从1到4位数的任何数字)。我的数据如下所示:
"A beautiful flat on the 3rd floor with floor area: 50 sqm and a lift"
"Newbuild flat. Floor Area: 30 sq.m"
"6 bed house with floor area 50 sqm, lot area 25 sqm"
Run Code Online (Sandbox Code Playgroud)
如果我尝试仅提取数字或从sqm进行回顾,有时会错误地获得地块面积。正则表达式对我来说是一个弱点。提前谢谢了。
我试图使用非捕获组与包中的str_extract功能stringr.这是一个例子:
library(stringr)
txt <- "foo"
str_extract(txt,"(?:f)(o+)")
Run Code Online (Sandbox Code Playgroud)
这回来了
"foo"
Run Code Online (Sandbox Code Playgroud)
虽然我希望它只返回
"oo"
Run Code Online (Sandbox Code Playgroud)
喜欢这篇文章:https://stackoverflow.com/a/14244553/3750030
如何在R中使用非捕获组从返回值中删除组的内容,同时使用它进行匹配?
请考虑以下数据:
library(tibble)
key <- c("a", "b", "c", "d", "e")
tags <- c("A,B", "B", "A,E", "C,D", "")
data <- tibble(key, tags)
Run Code Online (Sandbox Code Playgroud)
在这里,key可能意味着书名,tags可能是流派,或者key可能是电子邮件发件人,tags可能意味着收件人.必不可少的是,列tags可以具有变量(可能为零)个不同的子串.
为了拆分我可以使用的固定数量的连接标签(例如数据)tidyr::spread,我可以使用字符串拆分来分隔tags列本身,但如何将两者结合起来呢?
我希望转换后的数据看起来像这样:
key A B C D E
a TRUE TRUE FALSE FALSE FALSE
b FALSE TRUE FALSE FALSE FALSE
c TRUE FALSE FALSE FALSE TRUE
d FALSE FALSE TRUE TRUE FALSE
e FALSE FALSE FALSE FALSE FALSE
Run Code Online (Sandbox Code Playgroud)
我可以看到通过拆分tags,确定唯一的子串并在每个子串上循环并测试tags每行是否包含字符串,可以分几步完成此操作.但是我更喜欢在使用tidyverse的管道中执行此 …
我知道关于正则表达式的堆栈溢出有很多问题但我无法通过我见过的可用帮助来完成这一个简单的任务.这是我的数据:
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)
谢谢.
我有一个地址,这81000是邮政编码(总是一个5位数字).
address <- "F47, First Floor, PTD 106273, Persiaran Indahpura Utama, Bandar Indahpura, 81000 Kulaijaya, Johor"
Run Code Online (Sandbox Code Playgroud)
我正在尝试确定使用的邮政编码regex,我尝试了以下内容:
## postal code pattern
postal_pattern <- '\\d{5}'
## extract postal code
postal_code <- stringr::str_extract_all(address, postal_pattern)
Run Code Online (Sandbox Code Playgroud)
但是,我得到了以下输出,这是部分正确的:
> postal_code
[[1]]
[1] "10627" "81000"
Run Code Online (Sandbox Code Playgroud)
我怎样才能提取81000使用regex或任何库?
如何从不是日期的文本中提取3位数字?
例:
"she is born on 02-05-1934 and she is 200 years old."
Run Code Online (Sandbox Code Playgroud)
那么,我如何从这里提取200
我在使用代码:
str_extract(data,"[[:digit:]]{3}")
Run Code Online (Sandbox Code Playgroud)
但它正在返回的输出-193.
我想从正则表达式中提取下面的第一句话.我想要实现的规则(我知道它不是通用解决方案)是从字符串启动中提取^(包括)以小写字母或数字开头的第一个句点/感叹号/问号.
require(stringr)
x = "Bali bombings: U.S. President George W. Bush amongst many others has condemned the perpetrators of the Bali car bombing of October 11. The death toll has now risen to at least 187."
Run Code Online (Sandbox Code Playgroud)
到目前为止,我最好的猜测是在这种情况下尝试实现非贪婪的字符串匹配前方法失败:
str_extract(x, '.+?(?=[a-z0-9][.?!] )')
[1] NA
Run Code Online (Sandbox Code Playgroud)
任何提示非常感谢.