如何在 R 中使用中断进行切割

dee*_*fan 9 split r binning

我试图了解 cut 如何划分和创建间隔;尝试过?cut但无法弄清楚r 中的cut是如何工作的。 这是我的问题:

set.seed(111)
data1 <- seq(1,10, by=1)
data1 
[1]  1  2  3  4  5  6  7  8  9 10
data1cut<- cut(data1, breaks = c(0,1,2,3,5,7,8,10), labels = FALSE)
data1cut
[1] 1 2 3 4 4 5 5 6 7 7
Run Code Online (Sandbox Code Playgroud)

1. 为什么data1cut结果中没有包含8,9,10 ?
2.为什么summary(data1)summary(data1cut)产生不同的结果?

summary(data1)
Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
1.00    3.25    5.50    5.50    7.75   10.00 

summary(data1cut)
Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
1.00    3.25    4.50    4.40    5.75    7.00  
Run Code Online (Sandbox Code Playgroud)

我应该如何更好地使用cut以便我可以根据summary(data1)的结果创建4 个 bin

bin1 [1 -3.25]
bin2 (3.25 -5.50]
bin3 (5.50 -7.75]
bin4 (7.75 -10] 
Run Code Online (Sandbox Code Playgroud)

谢谢你。

epo*_*po3 13

cut在您的示例中,将向量拆分为以下部分:0-1 ( 1); 1-2 ( 2); 2-3 ( 3); 3-5 ( 4); 5-7 ( 5); 7-8 ( 6); 8-10 ( 7)

括号中的数字是cut根据提供的breaks值分配给每个 bin 的默认标签。

cut默认情况下不包括较低的范围。如果你想改变它,那么你需要在include.lowest参数中指定它。

  1. 您没有分配标签,并且此函数中的默认参数为 FALSE,因此改为使用级别代码(括号中)的整数向量。

  2. summary(data1)是原始数据summary(data1cut)的摘要,是您的拆分的摘要。

您可以使用以下方法获得所需的拆分:

data2cut<- 
  cut(data1, breaks = c(1, 3.25, 5.50, 7.75, 10),
      labels = c("1-3.25", "3.25-5.50", "5.50-7.75", "7.75-10"),
      include.lowest = TRUE)
Run Code Online (Sandbox Code Playgroud)

结果如下:

> data2cut

 [1] 1-3.25    1-3.25    1-3.25    3.25-5.50 3.25-5.50 5.50-7.75 5.50-7.75 7.75-10   7.75-10  
[10] 7.75-10  
Levels: 1-3.25 3.25-5.50 5.50-7.75 7.75-10
Run Code Online (Sandbox Code Playgroud)

我希望现在清楚了。