R语言:为数据表多列实体创建分桶并统计数量
按指定分桶统计各列实体数量
解决方案(R语言)
假设你的原始数据已通过dput导入为数据框df,以下是基于指定分桶规则的统计代码:
# 1. 定义分桶参数 breaks <- c(-100, -20, -10, 100) bucket_labels <- c("-100至-20", "-20至-10", "-10至100") # 2. 遍历每列完成分桶统计 bucket_stats <- lapply(df, function(col) { # 使用cut进行分桶,include.lowest确保左端点被包含 table(cut(col, breaks = breaks, labels = bucket_labels, include.lowest = TRUE)) }) # 3. 转换为直观的数据框格式 stats_df <- as.data.frame(do.call(rbind, bucket_stats)) colnames(stats_df) <- bucket_labels
示例输出
如果你的原始数据是:
df <- structure(list( col1 = c(-50, -15, 20, -25, 80, -8, -12, -30), col2 = c(-18, 5, -22, -10, 90, -5, -25, 15), col3 = c(30, -11, -21, 60, -9, -19, -35, 70) ), class = "data.frame", row.names = c(NA, -8L))
运行代码后会得到如下统计结果:
-100至-20 -20至-10 -10至100 col1 3 2 3 col2 2 2 4 col3 2 2 4
代码说明
breaks指定分桶的分界值,bucket_labels对应每个区间的显示名称cut函数负责将列中的数值映射到对应分桶,include.lowest = TRUE保证-100这类左端点值被纳入第一个区间lapply遍历数据框的每一列,table统计每个分桶的实体数量- 最后通过
do.call(rbind, ...)将列表格式的统计结果转换为行列清晰的数据框
内容的提问来源于stack exchange,提问作者CodeMaster
相关产品推荐
相关产品推荐

