标签: gsub

删除R中字符串中空格后的所有内容

我想在字符串中的空格后删除所有内容.

例如:

"我的字符串很难过"

应该回来

"我的"

我一直试图弄清楚如何使用sub/qsub做到这一点,但到目前为止还没有成功.很感谢任何形式的帮助.

regex r gsub

8
推荐指数
4
解决办法
2万
查看次数

使用R中的gsub删除尾随空格

有没有人有一个技巧来删除变量上的尾随空格与gsub?

以下是我的数据示例.如您所见,我在变量中嵌入了尾随空格和空格.

county <- c("mississippi ","mississippi canyon","missoula ",
            "mitchell ","mobile ", "mobile bay")  
Run Code Online (Sandbox Code Playgroud)

我可以使用以下逻辑删除所有空格,但我真正想要的是仅在末尾移动空格.

county2 <- gsub(" ","",county)
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激.

r gsub

8
推荐指数
3
解决办法
2万
查看次数

替换"." 在R中使用gsub()的空格?

我有如下数据,我想替换"." 空间使用gsub()但我无法得到正确的输出.

data<-c("12.57869486" ,"12.57869582" ,"12.57870155")

a<- gsub("."," ", data)
a
[1] "           " "           " "           "
Run Code Online (Sandbox Code Playgroud)

r gsub

8
推荐指数
1
解决办法
2万
查看次数

R:在管道中组合几个gsub()函数

为了清理一些凌乱的数据,我想开始使用管道%>%,但是如果gsub()不在管道的开头,我就不能使R代码工作,应该发生得晚(注意:这个问题不关心适当导入,但数据清理)

简单的例子:

df <- cbind.data.frame(A= c("2.187,78 ", "5.491,28 ", "7.000,32 "), B = c("A","B","C"))
Run Code Online (Sandbox Code Playgroud)

A列包含字符(在本例中为数字,但也可以是字符串),需要清除.步骤是

df$D <- gsub("\\.","",df$A)
df$D <- str_trim(df$D) 
df$D <- as.numeric(gsub(",", ".",df$D))
Run Code Online (Sandbox Code Playgroud)

一个人可以轻易地解决这个

df$D  <-  gsub("\\.","",df$A) %>%
          str_trim() %>%
          as.numeric(gsub(",", ".")) %>%
Run Code Online (Sandbox Code Playgroud)

问题是第二个gsub,因为它要求输入....实际上是前一行的结果.

请问,任何人都可以解释如何在管道中进一步使用像gsub()这样的函数吗?非常感谢!

系统:R 3.2.3,Windows

pipeline r gsub

8
推荐指数
2
解决办法
6839
查看次数

除以# 开头的单词外,用于删除数字的正则表达式

我有一些可以包含字母、数字和“#”符号的字符串。

我想删除除以“#”开头的单词以外的数字

下面是一个例子:

"table9 dolv5e #10n #dec10 #nov8e 23 hello"
Run Code Online (Sandbox Code Playgroud)

预期的输出是:

"table dolve #10n #dec10 #nov8e  hello"
Run Code Online (Sandbox Code Playgroud)

如何使用 regex、stringr 或 gsub 执行此操作?

regex r gsub stringr

8
推荐指数
2
解决办法
331
查看次数

R - mgsub 问题:被替换的子字符串不是整个字符串

我已经从 USPS 下载了街道缩写。这是数据:

dput(usps_streets)
structure(list(common_abbrev = c("allee", "alley", "ally", "aly", 
"anex", "annex", "annx", "anx", "arc", "arcade", "av", "ave", 
"aven", "avenu", "avenue", "avn", "avnue", "bayoo", "bayou", 
"bch", "beach", "bend", "bnd", "blf", "bluf", "bluff", "bluffs", 
"bot", "btm", "bottm", "bottom", "blvd", "boul", "boulevard", 
"boulv", "br", "brnch", "branch", "brdge", "brg", "bridge", "brk", 
"brook", "brooks", "burg", "burgs", "byp", "bypa", "bypas", "bypass", 
"byps", "camp", "cp", "cmp", "canyn", "canyon", "cnyn", "cape", 
"cpe", "causeway", "causwa", "cswy", "cen", "cent", "center", 
"centr", "centre", "cnter", "cntr", "ctr", "centers", "cir", 
"circ", "circl", …
Run Code Online (Sandbox Code Playgroud)

string performance r gsub

8
推荐指数
3
解决办法
398
查看次数

使用“regex”反转字符串的任何简洁方法,例如,在 R 中使用“gsub”?(寻找解决方法)

我知道我们可以使用其他更有效的non-regex方式来做到这一点,例如+或+ ,但我想知道我们是否可以仅使用正则表达式来完成它。revstrsplitrevsubstring


例如,假设我们有一个 string s1 <- "ab82m4",我的gsub尝试是

> gsub(strrep("(.)", nchar(s1)), paste0(sprintf("\\%d", nchar(s1):1), collapse = ""), s1)
[1] "4m28ba"
Run Code Online (Sandbox Code Playgroud)

效果很好但很麻烦。

然而,当我们有更长的 刺 时s2 <- "ab82m42,x7",我们无法达到所需的输出,因为组数超过,这超出了(我猜)9允许的上限gsub

> gsub(strrep("(.)", nchar(s2)), paste0(sprintf("\\%d", nchar(s2):1), collapse = ""), s2)
[1] "a0x,24m28ba" # should be "7x,24m28ba"
Run Code Online (Sandbox Code Playgroud)

我只是想知道是否有一种模式或解决方法可以应用gsub来反转字符串。确实对这种可能性感到好奇!:)


强调

我很好奇实现目标的可能解决方法(而不是分组),即以正则表达式的方式反转字符串,而不是在这里讨论使用分组的可行性

regex string r gsub

8
推荐指数
1
解决办法
440
查看次数

从字符串中删除网址

我有以下字符串,存储在对象中sentence:

sentence <- "aazdlubtirol: RT @tradeDayTrades: sister articles \"$AAPL Dancing in a Burning Room\" January 2013  http://t.co/tkuCRfLy  \" $AAPL vs $AAPL \"  August 2011 http://t.co/863HkVjn"
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用gsub删除以下开头的网址http:

sentence <- gsub('http.*','',sentence)

但是,它取代之后的所有内容http:

aazdlubtirol: RT @tradeDayTrades: sister articles \"$AAPL Dancing in a Burning Room\" January 2013

我想要的是:

aazdlubtirol: RT @tradeDayTrades: sister articles \"$AAPL Dancing in a Burning Room\" January 2013 \" $AAPL vs $AAPL \" August 2011

我正在尝试清理网址,所以如果字符串包含http我想要删除网址.我找到了一些解决方案,但他们没有帮助我.

url replace r gsub

7
推荐指数
1
解决办法
5192
查看次数

复制数据帧的观察,但也替换R中的特定变量值

我正在寻找一些关于数据重组的建议.我正在使用Google Forms收集一些数据,我将其作为csv文件下载,如下所示:

# alpha                 beta    option
#  6             8, 9, 10, 11    apple
#  9                        6     pear
#  1                        6    apple
#  3                     8, 9     pear
#  3                     6, 8     lime
#  3                        1    apple
#  2, 4, 7, 11              9     lime
Run Code Online (Sandbox Code Playgroud)

数据有两个变量(alpha和beta),每个变量都列出数字.对于我的大多数数据,每个变量中只有一个数字.但是,对于某些观察,可以有两个,三个甚至十个数字.这是因为这些是使用谷歌表单中的"复选框"选项收集的回复,它允许对一个调查问题的多个答案.此外,对于一些潜在的解决方案来说,google表单在每个多个答案之前返回前导空格可能很重要.

在我的实际数据中,这只发生在所有观察的很小一部分中,上面是一个更简洁的例子.数据集中还有其他几个变量.在这里,我只包括一个包含因子的"选项".

我需要做的是在'alpha'或'beta'变量中复制包含多个数字的所有观察.重复行的数量应该等于alpha或beta变量中存在的数字的数量.然后,我需要将'alpha'或'beta'变量中的数字序列单独替换为每个数字.这将导致类似以下内容:

#  alpha  beta   option
#     6    8     apple
#     6    9     apple
#     6   10     apple
#     6   11     apple
#     9    6      pear
#     1    6     apple
#     3    8      pear
#     3    9 …
Run Code Online (Sandbox Code Playgroud)

r gsub reshape2 grepl

7
推荐指数
2
解决办法
277
查看次数

匹配并替换文本向量中的多个字符串,而不在R中循环

我试图在R中应用gsub来将字符串a中的匹配替换为字符串b中的相应匹配.例如:

a <- c("don't", "i'm", "he'd")
b <- c("do not", "i am", "he would")
c <- c("i'm going to the party", "he'd go too")
newc <- gsub(a, b, c)
Run Code Online (Sandbox Code Playgroud)

这样newc ="我要参加聚会","他也会参加聚会".这种方法不起作用,因为gsub只接受a和b的长度为1的字符串.执行循环以循环a和b将非常慢,因为实数a和b的长度为90且c的长度> 200,000.R中是否有矢量化方式来执行此操作?

r gsub

7
推荐指数
2
解决办法
1万
查看次数

标签 统计

gsub ×10

r ×10

regex ×3

string ×2

grepl ×1

performance ×1

pipeline ×1

replace ×1

reshape2 ×1

stringr ×1

url ×1