You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何高效计算R语言中多列元素的出现频率?

计算多列中各唯一值的总出现次数

你可以用以下几种简洁的方法来实现需求:

方法1:扁平化数据后用table()

直接把数据框转为向量,再用table()统计,这是最直观的方式:

x <- c(1,2,3)
y <- c(2,3,1)
z <- c(3,2,2)
df <- data.frame(x,y,z)

# 扁平化数据并统计
table(unlist(df))

输出结果会直接显示每个值的总出现次数:

1 2 3 
2 4 3 

方法2:用tidyverse工具集(适合数据框操作)

如果习惯用tidyverse的语法,可以先将数据转为长格式再计数:

library(dplyr)
library(tidyr)

df %>%
  pivot_longer(cols = everything(), # 选中所有列
               names_to = "列名", 
               values_to = "数值") %>%
  count(数值)

输出结果是一个数据框,清晰展示每个值的计数:

数值     n
<int> <int>
1     1     2
2     2     4
3     3     3

方法3:针对指定值直接求和

如果已经明确要统计的唯一值是1、2、3,可以直接计算每个值在所有列中的出现总和:

sapply(c(1,2,3), function(val) sum(df == val))

输出结果为:

1 2 3 
2 4 3 

为什么直接用table(df)不行?

直接运行table(df)会生成列与列之间的交叉频数表,展示的是每列值的组合出现次数,而不是所有列中单个值的总计数,这就是你没得到预期结果的原因。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 02:40:33