如何在R语言中仅让最后一个组距区间右闭合?
实现统计分组最后一个区间右闭合的R语言方法
要让统计分组的最后一个区间显示为右闭合(如[386,392]),其他区间保持左闭右开,只需修改分组的标签文本即可,以下是两种可行方案:
方案1:生成分组后修改最后一个标签
先按原逻辑生成分组,再通过字符串替换把最后一个区间的右括号)改成方括号]:
dados <- c(350, 356, 364, 369, 371, 375, 379, 384, 392, 350, 358, 364, 370, 371, 376, 380, 388, 351, 359, 365, 370, 372, 376, 380, 391, 352, 361, 365, 370, 372, 377, 381, 391, 352, 362, 366, 371, 373, 378, 382, 392, 354, 363, 368, 371, 374, 378, 383, 392) limites <- seq(min(dados), max(dados), by = 6) classes <- cut(dados, breaks = limites, right = FALSE) freqAbs <- table(classes) # 修改最后一个分组的标签 names(freqAbs)[length(names(freqAbs))] <- gsub("\\)", "]", names(freqAbs)[length(names(freqAbs))]) tabela <- data.frame(Classe = names(freqAbs), Frequencia = as.numeric(freqAbs)) print(tabela)
运行结果:
Classe Frequencia 1 [350,356) 6 2 [356,362) 4 3 [362,368) 7 4 [368,374) 12 5 [374,380) 8 6 [380,386) 6 7 [386,392] 3
方案2:提前生成自定义标签
手动构造所有区间的标签,指定最后一个为右闭合格式,再传给cut()的labels参数:
dados <- c(350, 356, 364, 369, 371, 375, 379, 384, 392, 350, 358, 364, 370, 371, 376, 380, 388, 351, 359, 365, 370, 372, 376, 380, 391, 352, 361, 365, 370, 372, 377, 381, 391, 352, 362, 366, 371, 373, 378, 382, 392, 354, 363, 368, 371, 374, 378, 383, 392) limites <- seq(min(dados), max(dados), by = 6) # 生成基础标签(左闭右开) labels <- paste0("[", limites[-length(limites)], ",", limites[-1], ")") # 替换最后一个标签为右闭合格式 labels[length(labels)] <- paste0("[", limites[length(limites)-1], ",", limites[length(limites)], "]") # 用自定义标签生成分组 classes <- cut(dados, breaks = limites, right = FALSE, labels = labels) freqAbs <- table(classes) tabela <- data.frame(Classe = names(freqAbs), Frequencia = as.numeric(freqAbs)) print(tabela)
该方案运行结果与方案1完全一致。
内容的提问来源于stack exchange,提问作者Felipe Kucharski
相关产品推荐
相关产品推荐

