如何删除R中特定位置的字符串中的空格?

时间:2014-08-08 05:30:11

标签: regex r gsub

我有很长的名单,我必须计算每个名字出现的次数。但是这些名字与空格混合在一起。

这是一个简单的例子

x <- c(" John D","John D ","John D")
table(x)
x
 John D  John D John D  
      1       1       1 

您可以看到,因为它识别为三个不同的名称。我要做的就是不要失去John和D之间的空间,我必须删除剩余的空间。 请帮忙。谢谢。

2 个答案:

答案 0 :(得分:6)

尝试:

 library(stringr)
 x1 <- str_trim(x)
 table(x1)
 #x1
 # John D 
 #     3 

或者

  gsub("^ +| +$", "",x)
 #[1] "John D" "John D" "John D"
  • ^ +| +$ - 开头或结尾有0个或更多空格
  • 将其替换为&#34;&#34;

如果您有这样的矢量:

x <- c("John     D", "   \n John D", "John  D \r")
library(qdap)
strip(x,lower.case=F)
#[1] "John D" "John D" "John D"

如果名称str_trim之间没有其他空格仍可使用

 x <- c("  \nJohn D","John D\r ","John D")
 str_trim(x)
 #[1] "John D" "John D" "John D"

答案 1 :(得分:6)

您可以使用gsub删除前导/尾随空白字符。

x <- c("   John D", "John D   ", " John D ")
y <- gsub('^\\s+|\\s+$', '', x)
table(y)
# y
# John D 
#      3 

解释\s匹配空白(\n\r\t\f" " )仅分别在字符串的开头^和结尾$+量词表示匹配( 1 或更多次)。

您还可以使用stringr库包。

library(stringr)
x <- c("   John D", "John D   ", " John D ")
y <- str_trim(x, side='both')
table(y)
# y
# John D 
#      3