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]