我有很长的名单,我必须计算每个名字出现的次数。但是这些名字与空格混合在一起。
这是一个简单的例子
x <- c(" John D","John D ","John D")
table(x)
x
John D John D John D
1 1 1
您可以看到,因为它识别为三个不同的名称。我要做的就是不要失去John和D之间的空间,我必须删除剩余的空间。 请帮忙。谢谢。
答案 0 :(得分:6)
尝试:
library(stringr)
x1 <- str_trim(x)
table(x1)
#x1
# John D
# 3
或者
gsub("^ +| +$", "",x)
#[1] "John D" "John D" "John D"
^ +| +$
- 开头或结尾有0个或更多空格如果您有这样的矢量:
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