R 如何从连续变量创建带自定义分隔符的装箱因子变量?

R 如何从连续变量创建带自定义分隔符的装箱因子变量?,r,R,我有一个向量,看起来像这样: dataset <- c(4,7,9,1,10,15,18,19,3,16,10,16,12,22,2,23,16,17) dataset使用cut: data.frame(dataset, bin=cut(dataset, c(1,4,9,17,23), include.lowest=TRUE)) require(Hmisc) cut2(dataset, c(1,4,9,17,23) ) [1] [ 4, 9) [ 4, 9) [ 9,17) [ 1,

我有一个向量,看起来像这样:

dataset <- c(4,7,9,1,10,15,18,19,3,16,10,16,12,22,2,23,16,17)
dataset使用
cut

data.frame(dataset, bin=cut(dataset, c(1,4,9,17,23), include.lowest=TRUE))
require(Hmisc)
cut2(dataset, c(1,4,9,17,23) )
 [1] [ 4, 9) [ 4, 9) [ 9,17) [ 1, 4) [ 9,17) [ 9,17) [17,23] [17,23] [ 1, 4) [ 9,17)
[11] [ 9,17) [ 9,17) [ 9,17) [17,23] [ 1, 4) [17,23] [ 9,17) [17,23]

我同意Joshua的观点,大多数人都会想到削减这项任务。我不喜欢它的默认设置,我更喜欢左关闭间隔,使用
cut
(虽然这是可以做到的。幸运的是,对于我虚弱的大脑,弗兰克·哈雷尔在他的Hmisc软件包中设计了一个
cut2
函数,我更喜欢它的默认值。第三种选择是使用
findInterval
,它特别适合于将结果用作另一个提取或选择过程的索引的问题。它s的结果大致与将
作为.numeric
应用于
cut
的结果时得到的结果相同:

data.frame(dataset, bin=cut(dataset, c(1,4,9,17,23), include.lowest=TRUE))
require(Hmisc)
cut2(dataset, c(1,4,9,17,23) )
 [1] [ 4, 9) [ 4, 9) [ 9,17) [ 1, 4) [ 9,17) [ 9,17) [17,23] [17,23] [ 1, 4) [ 9,17)
[11] [ 9,17) [ 9,17) [ 9,17) [17,23] [ 1, 4) [17,23] [ 9,17) [17,23]
(请注意,
findInterval
将使用上限作为闭合端,以形成额外的间隔,除非将最大值替换为
Inf
,这是R中无限的保留字。)


要从
cut
获取虚拟变量(这是OP要求的),请尝试
model.matrix(~bin-1,data=dataset)