如何将向量分成 R 中具有相同数量观察值的组?
How to cut a vector into groups with equal number of observations in R?
如何在 R 中将向量分成包含大致相等数量的观察值的组?我还需要知道切割点值是多少,以便对未来的输入进行分类。
所以基本上,我试图将连续变量转换为分类变量,每个类别中的观察值数量相等。我需要知道每个类别的边界。请帮忙。
例如:
bla <- c(1,2,3,4,5,6,7,8,9,10,11,12)
blaClass <- cut(bla, 3)
每个 blaClass 包含相等数量的观察值。但问题是我有很多观测值彼此非常接近,甚至具有相同的值,因此很难将它们分成具有相同观测值的组。
我尝试使用 quantileCut,但出现“中断不唯一”错误。
您可以使用dplyr::ntile()
将它们分割成分位数。例如,
ntile(bla,3)
[1] 1 1 1 1 2 2 2 2 3 3 3 3
将它们平均削减 q(1/3)
和 q(2/3)
我认为 cut
已经按照您的预期工作,返回的标签不容易阅读。您可以使用 labels = FALSE
关闭标签
bla <- c(1,2,3,4,5,6,7,8,9,10,11,12)
blaClass <- cut(bla, 3, labels = FALSE)
blaClass
#[1] 1 1 1 1 2 2 2 2 3 3 3 3
使用我的 santoku
包:
library(santoku)
bla <- c(1,2,3,4,5,6,7,8,9,10,11,12)
chop_equally(bla, 3)
也适用于许多靠在一起的数字:
bla <- rep(1:5, 5) + rnorm(25)/1e8
table(chop_equally(bla, 5, lbl_intervals(raw = TRUE)))
## [1, 1.8) [1.8, 2.6) [2.6, 3.4) [3.4, 4.2) [4.2, 5]
## 5 5 5 5 5
如何在 R 中将向量分成包含大致相等数量的观察值的组?我还需要知道切割点值是多少,以便对未来的输入进行分类。
所以基本上,我试图将连续变量转换为分类变量,每个类别中的观察值数量相等。我需要知道每个类别的边界。请帮忙。
例如:
bla <- c(1,2,3,4,5,6,7,8,9,10,11,12)
blaClass <- cut(bla, 3)
每个 blaClass 包含相等数量的观察值。但问题是我有很多观测值彼此非常接近,甚至具有相同的值,因此很难将它们分成具有相同观测值的组。
我尝试使用 quantileCut,但出现“中断不唯一”错误。
您可以使用dplyr::ntile()
将它们分割成分位数。例如,
ntile(bla,3)
[1] 1 1 1 1 2 2 2 2 3 3 3 3
将它们平均削减 q(1/3)
和 q(2/3)
我认为 cut
已经按照您的预期工作,返回的标签不容易阅读。您可以使用 labels = FALSE
bla <- c(1,2,3,4,5,6,7,8,9,10,11,12)
blaClass <- cut(bla, 3, labels = FALSE)
blaClass
#[1] 1 1 1 1 2 2 2 2 3 3 3 3
使用我的 santoku
包:
library(santoku)
bla <- c(1,2,3,4,5,6,7,8,9,10,11,12)
chop_equally(bla, 3)
也适用于许多靠在一起的数字:
bla <- rep(1:5, 5) + rnorm(25)/1e8
table(chop_equally(bla, 5, lbl_intervals(raw = TRUE)))
## [1, 1.8) [1.8, 2.6) [2.6, 3.4) [3.4, 4.2) [4.2, 5]
## 5 5 5 5 5