我经常发现自己试图从数值变量+用户提供的范围集创建分类变量.
例如,假设我有一个带有数字变量的data.frame,df$V并且想要创建一个新变量df$VCAT,以便:
df$VCAT= 0如果df$V等于0df$VCAT= 1如果df$V介于0到10之间(即(0,10))df$VCAT= 2 df$V等于10(即[10,10])df$VCAT= 3是df$V10到20之间(即(10,20))df$VCAT= 4 df$V大于或等于20(即[20,Inf])我目前通过以下方式对自己的"评分函数"进行硬编码来做到这一点:
df = data.frame(V = seq(1,100))
df = df %>% mutate(VCAT = (V>0) + (V==10) + 2*(V>10) + (V>=20))
Run Code Online (Sandbox Code Playgroud)
我想知道在R中是否有更简单的hacky方法,最好使用dplyr(这样我可以链接命令).理想情况下,我正在寻找一个可以使用的短函数,mutate它将接收变量V和描述范围的向量,例如buckets.请注意,这里buckets可能没有以最佳方式描述,因为我不清楚如何允许用户自定义范围的端点.