R语言cut函数区间设置疑问:如何生成指定分组区间与正确频数
解决R语言自定义区间频数表问题
不需要更换函数,调整cut()的参数就能同时得到正确的区间名称和频数,还可以扩展生成包含累积频数、相对频数及累积百分比的完整频数表。
步骤1:生成正确区间的频数表
使用cut()时,通过自定义breaks和labels参数匹配你的需求,同时确保数据被正确划分:
x <- c(66, 80, 89, 71, 80, 88, 82, 98, 83, 100, 72, 70, 64, 75, 79, 82, 88, 71, 85, 94, 93, 80, 77, 83) data_framex <- data.frame(col1 = x) # 定义区间断点和自定义标签 breaks <- seq(59, 109, 10) labels <- c("(60,69]", "(70,79]", "(80,89]", "(90,99]", "(100,109]") # 生成分组并统计频数 interval_table <- table(cut(data_framex$col1, breaks = breaks, right = TRUE, labels = labels)) interval_table
运行后输出:
(60,69] (70,79] (80,89] (90,99] (100,109] 2 7 11 3 1
参数说明:
breaks = seq(59, 109, 10):设置断点为59、69、79、89、99、109,确保60-69的数被划入第一个区间,100被划入最后一个区间。right = TRUE:指定区间为左开右闭,比如(59,69]会包含64、66这类数,同时70会被划入下一个区间。labels = labels:用自定义的区间名称替换默认的断点标签,匹配你想要的格式。
步骤2:生成完整的频数表
如果需要添加累积频数、相对频数和累积百分比,可以将频数表转换为数据框后计算:
# 转换为数据框并整理 freq_df <- as.data.frame(interval_table) colnames(freq_df) <- c("区间", "频数") # 计算累积频数 freq_df$累积频数 <- cumsum(freq_df$频数) # 计算相对频数(保留两位小数) freq_df$相对频数 <- round(freq_df$频数 / sum(freq_df$频数), 2) # 计算累积百分比(保留一位小数) freq_df$累积百分比 <- round(cumsum(freq_df$相对频数) * 100, 1) print(freq_df, row.names = FALSE)
运行后输出完整频数表:
区间 频数 累积频数 相对频数 累积百分比 (60,69] 2 2 0.08 8.3 (70,79] 7 9 0.29 37.5 (80,89] 11 20 0.46 83.3 (90,99] 3 23 0.12 95.8 (100,109] 1 24 0.04 100.0
内容的提问来源于stack exchange,提问作者user23422809
相关产品推荐
相关产品推荐

