R,计数频率“”

时间:2013-12-08 07:58:49

标签: r frequency

在我解析一个html文件后,我得到了类似的东西,我想计算“”(第3行)的频率

html_1

[1]"I'm working"
[2]" "
[3]""
[4]" "

class(html_1)
character

我会将表函数用于普通数据帧,但是一旦我将其更改为数据框,它就会变成如下所示,所以我再也无法区分“”和“”了。

html_2 <- as.data.frame(html_1)
html_2

I'm working

任何建议计数“”?

3 个答案:

答案 0 :(得分:2)

这主要建立在@ Roman的答案之上,但(1)向您展示了“看到”空格的不同方式,(2)向您展示了制表的不同想法:

html_1 <- c("I'm working here", " ", "", " ", "No", NA, "")
html_2 <- as.data.frame(html_1)

print有一个quote参数,可以让您在列周围添加引号,以便您可以更轻松地查看前导和尾随空格。这也很有帮助。

print(html_2, quote = TRUE)
#               html_1
# 1 "I'm working here"
# 2                " "
# 3                 ""
# 4                " "
# 5               "No"
# 6                 NA
# 7                 ""

制表就像查找看起来像""的字符串一样简单:

html_2$html_1 == ""
# [1] FALSE FALSE  TRUE FALSE FALSE    NA  TRUE
table(html_2$html_1 == "")
# 
# FALSE  TRUE 
#     4     2 

或者,您可以计算每个项目中有多少个字符来获取相同的信息。在这里,0显然是感兴趣的字符串(但我不喜欢NA被计为两个字符。)

table(nchar(as.character(html_2$html_1)))
# 
#  0  1  2 16 
#  2  2  2  1 

答案 1 :(得分:2)

您可以使用正则表达式查找空字符串:

html1 <- c("I'm working here", " ", "", " ")
idx <- grepl("^$", html1)
# [1] FALSE FALSE  TRUE FALSE

在上面的代码中,^$表示""。计算空字符串:

table(idx)
# idx
# FALSE  TRUE 
#     3     1 

答案 2 :(得分:1)

选择一个:

sum(html_1 == "")

sum(nchar(html_1) == 0)