【问题标题】:R, count frequency of ""R, ""的计数频率
【发布时间】:2013-12-08 19:59:31
【问题描述】:

解析一个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

计算“”有什么建议吗?

【问题讨论】:

    标签: r frequency


    【解决方案1】:

    这主要基于@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 
    

    【讨论】:

    • 非常感谢!真的很有帮助!
    【解决方案2】:

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

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

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

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

    【讨论】:

    • 谢谢!我不知道我可以对“”使用正则表达式
    【解决方案3】:

    选择一个:

    sum(html_1 == "")
    
    sum(nchar(html_1) == 0)
    

    【讨论】:

    • 谢谢!非常简洁的答案=)
    猜你喜欢
    • 2020-06-30
    • 1970-01-01
    • 1970-01-01
    • 2013-09-24
    • 2012-06-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多