You need to enable JavaScript to run this app. 如何在R中统计data.frame里YES与NO的词频
优惠活动
大模型
产品
解决方案
定价
更多

如何在R中统计data.frame里YES与NO的词频

R 中统计两类文本取值频次的实现方法

注意:你提供的示例数据中第5条的YES取值末尾附带多余空格,直接统计会被识别为独立类别造成计数偏差,所有方法第一步都需要先用trimws()清除字符串前后的空白字符。

方法1:基础R 原生table()函数实现

  • 代码步骤:
    1. 清洗Answer列的多余空白:
      df$Answer <- trimws(df$Answer)
    2. 直接调用table完成计数:
      table(df$Answer)
      运行后控制台输出效果和你给出的示例完全一致:
    YES  NO 
      4   2 
    
    如果发现输出的类别顺序错位(NO排在YES前面),可以手动指定因子水平修正:
    table(factor(df$Answer, levels = c("YES", "NO")))

方法2:tidyverse生态写法

  • 需提前加载对应包:
    library(dplyr)
    library(tidyr)
  • 链式操作完成全流程处理:
    df %>% 
      # 清除Answer列的多余空格
      mutate(Answer = trimws(Answer)) %>% 
      # 按Answer的类别分组计数
      count(Answer, name = "cnt") %>% 
      # 转换为横向单行的宽表格式
      pivot_wider(names_from = Answer, values_from = cnt)
    
    输出结果为标准data.frame结构,列名和计数结果完全匹配预期。

方法3:逻辑判断直接计数(可控性最高)

  • 无需依赖第三方包,手动指定列名可以完全避免顺序错位问题:
    # 先清洗字符串
    cleaned_answer <- trimws(df$Answer)
    # 计算每个类别的计数并生成结果表
    result <- data.frame(
      YES = sum(cleaned_answer == "YES"),
      NO = sum(cleaned_answer == "NO")
    )
    
    直接运行result即可得到和示例完全一致的输出效果。

内容的提问来源于stack exchange,提问作者John_Average

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.10 09:15:08