为什么R中的排序从1开始计数而不是从0开始计数?

问题描述 投票:0回答:1

我是 R 新手,正在尝试设置频率表的组成部分(频率、累积频率、相对频率和累积百分比)。我得到了一组 24 个数字(范围从 64 到 100),以将其分组为宽度为 10 的类别。这就是我遇到的问题。我想创建 5 个类别,每个类别有 10 个数字(60-69、70-79、80-89、90-99、100-109)。当我在 R 中按 10 从 60 到 109 排序时,它会创建 11 个类别(60-70、70-80、80-90 等)。如果我要求 R 执行相同的任务,但从 59 到 109,乘以 10,它会为我提供其余代码的正确值,但我的类别在数字上不准确。我是否需要使用不同的函数来获得正确的结果,或者有没有办法让我将 R 设置为将 60-69 计为 10,就像询问 length(60-69): >10 时一样?

给定 24 个数据点,我将每个数字输入到一个向量中。我将向量转换为具有 1 列的数据框,并将向量分配给该列。我尝试使用 R 中的序列命令将 24 个数字的数据帧分类为类别 60-69 到 100-109,增量为 10,使用以下代码:

间隔表<- table(cut(data_framex$col1, seq(60, 109, 10)

输出给了我:

(60,70] (70,80] (80,90] (90,100] 3 9 8 4

当我在 R 中询问 60:70 的长度时,它告诉我长度=11,所以我假设它以某种方式从 61 而不是 60 开始计数,即使该类别包含 60 到 70 之间的所有数字。

如果我将顺序设置为以下,它会给出正确的计数,但类别不正确。

间隔表<- table(cut(data_framex$col1, seq(59, 109, 10)

输出: (59,69] (69,79] (79,89] (89,99] (99,109] 2 7 11 3 1

请参阅下面的完整代码。由于我是新人,我可能认为这是完全错误的,应该使用不同的代码,但我无法通过搜索结果找到答案。我感谢您的帮助!

×<- 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) interval_table <- table(cut(data_framex$col1, seq(60, 109, 10))) interval_table

输出: (60,70] (70,80] (80,90] (90,100] 3 9 8 4

期望的输出: (60,69] (70,79] (80,89] (90,99] (100,109] 2 7 11 3 1

r sequence frequency-distribution
1个回答
0
投票

您可以在 cut 函数中使用正确的参数并将其设置为 FALSE。 这将使间隔左闭。以下是修改代码的方法:

#for example
# your data
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)

# Create a data frame
data_framex <- data.frame(col1 = x)

# Create the intervals with left-closed intervals
interval_table <- table(cut(data_framex$col1, seq(60, 109, 10), right = FALSE))

# Print the result
print(interval_table)
© www.soinside.com 2019 - 2024. All rights reserved.