R中用于data.tables的cut函数的替代方法-整数变量到因子

R中用于data.tables的cut函数的替代方法-整数变量到因子,r,data.table,cut,R,Data.table,Cut,我想将整数变量hp转换为一个分类变量,以10为单位 mtcars[, hp_cat := cut(hp, breaks = c(0, 10, 20, 30 40, 50, 60, 70, 80, 90, 100, 110, 120, 130, 140, 150, 160, Inf), include.lowest = TRUE )] 这会产生所需的结果,但是写出所有的数字是很繁琐的。有没有更快的办法?理想情况下,替代方案也会产生更好的因子名称 注意:我想要数据表中的结果。。。所以没

我想将整数变量
hp
转换为一个分类变量,以10为单位

mtcars[, hp_cat := cut(hp, 
    breaks = c(0, 10, 20, 30 40, 50, 60, 70, 80, 90, 100, 110, 120, 130, 140, 150, 160, Inf), 
include.lowest = TRUE )]
这会产生所需的结果,但是写出所有的数字是很繁琐的。有没有更快的办法?理想情况下,替代方案也会产生更好的因子名称


注意:我想要数据表中的结果。。。所以没有dplyr

只需使用sequence函数。根据具体情况,可以将
-Inf
作为向量中的第一个元素。标签参数还允许您分配名称,这在下面的代码中起作用:
labels=paste0(“组”,2:length(BRKS))


BRKS另一个应该更快的选项:

mtcars[, hp_cat2 := ceiling(hp/10)*10][hp_cat2 > 160, hp_cat2 := Inf]

使用正确的限制作为更好的因子名称的命名

cut(hp,breaks=seq(from=0,to=160,by=10))
?是否可以说拥有一个超过160的类别?是的,在最后使用Inf,请参阅下面我所做的。是否可以将函数seq的限制从例如(0,10)更改为[0,10] ?
mtcars[, hp_cat2 := ceiling(hp/10)*10][hp_cat2 > 160, hp_cat2 := Inf]