如何计算R语言数据框num列中各数字的出现频次总和?
嘿,这个需求太常见啦,我给你整理了几种实用的实现方式,都能精准得到你想要的结果:
方法一:使用Base R的
table()函数 这是最基础直接的方式,table()函数会自动统计每个值的出现次数,之后我们只需把它转换成你需要的数据框格式即可:
# 先创建你的数据框 df1 <- data.frame(num = c(1,1,1,2,2,2,3)) # 统计频次并转为数据框 freq_table <- as.data.frame(table(df1$num)) # 修改列名匹配你的需求 colnames(freq_table) <- c("num", "frequency") # 查看结果 print(freq_table)
运行后输出结果:
num frequency 1 1 3 2 2 3 3 3 1
方法二:使用dplyr包的
count()函数 如果你平时常用tidyverse系列工具,count()函数可以一步到位完成统计,代码更简洁易读:
# 先安装并加载dplyr包(首次使用需运行install.packages("dplyr")) library(dplyr) df1 <- data.frame(num = c(1,1,1,2,2,2,3)) # 直接统计频次并设置结果列名 freq_table <- df1 %>% count(num, name = "frequency") print(freq_table)
该方法的输出结果和上面完全一致。
方法三:使用data.table包(适合大数据场景)
如果你的数据集体量很大,data.table的处理效率会更高,用法也很直观:
# 先安装并加载data.table包(首次使用需运行install.packages("data.table")) library(data.table) # 将数据框转换为data.table对象 dt1 <- as.data.table(df1) # 按num分组统计频次 freq_table <- dt1[, .(frequency = .N), by = num] print(freq_table)
同样能得到你想要的结果,且大数据量下的运行速度优势明显。
内容的提问来源于stack exchange,提问作者rek
相关产品推荐
相关产品推荐

