r - 如何纠正切割方法的错误结果?

标签 r

我试图获得 150 个样本的 5 个间隔,但显然 R cut 方法给了我一个错误的结果。下面我留下数据集和代码

age = c(89,81,59,80,74,36,28,73,44,51,31,75,31,60,42,16,38,76,72,67,47,31,63,45,58,78,45,90,41,53,24,47,41,24,59,
18,72,12,79,80,73,47,74,37,30,24,61,50,82,84,63,60,39,23,72,67,46,37,14,90,50,12,20,25,55,87,59,76,23,23,
36,61,19,65,42,80,23,41,20,77,20,52,54,33,38,53,71,78,71,12,77,40,80,23,45,58,73,24,50,15,81,61,59,33,37,
51,59,25,17,65,83,35,78,48,25,38,88,14,40,72,80,89,70,42,88,14,51,35,21,88,73,53,81,85,30,66,57,34,90,53,
40,80,76,24,33,69,81,52,35,33)

table((cut(age, breaks=5, right=FALSE, dig.lab=2))

# ---- results (wrong) ----
[12,28) [28,43) [43,59) [59,74) [74,90) 
     28      32      26      31      33 

正确结果如下表

<表类=“s-表”> <标题> [12 - 28> [28 - 43> [43 - 59> [59 - 74> [74 - 90] <正文> 28 32 26 29 35

最佳答案

您选择的dig.lab只会影响级别的标签,而不影响切割的实际值。如果你运行

levels(cut(age, breaks=5, right=FALSE))
# [1] "[11.9,27.6)" "[27.6,43.2)" "[43.2,58.8)" "[58.8,74.4)"
# [5] "[74.4,90.1)"

您会看到实际的分隔符有小数点。即使您使用 dig.lab 更改标签,也会使用相同的中断。 dig.lab 选项纯粹是装饰性的。

如果您想使用这些精确的分隔符,则需要自己指定它们。例如

table(cut(age, breaks=c(12,38,43,59,74,90), right=FALSE, include.lowest = TRUE))
# [12,38) [38,43) [43,59) [59,74) [74,90] 
#      47      13      26      29      35 

关于r - 如何纠正切割方法的错误结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68078167/

相关文章:

r - 如何在r中按组计算字符串中的字符?

r - Shiny可以判断登录nginx反向代理的用途

r - 消除垂直线ggplot

R循环和data.frame

r - 如何以正确的大小显示相关图中的 p 值?

r - 有条件地将 NAs 替换为 R 中数据框中的字符串

r - 如何以 log2(n+1) 格式重新缩放 x 轴上的标签?

r - knitr、RGL 和 legend3d : legend3d didn't show up in the html generated by knitr

python - 在 RPy 中获取 nlme.lme() 或 lme4.lmer() 的清晰摘要

用于查找错误输入数据的 R 包