如何在不使用ifelse的情况下基于范围创建因子列



我在数据框中有一个数字字段,例如月收入,范围从INR 15000到INR 60000不等。

我想要一个新的字段income_group,它将有一个数字对应的收入范围,例如低于15000是1,高于15000但低于30000是2,等等。

一种方法是使用嵌套的ifelse语句,如下所示
mydataframe$incomegp <- ifelse(monthincome_condition, assign_number, 
                               ifelse statement and so on)

但是我有大约7个不同的数字属于这个范围,所以我正在寻找一个更优雅的解决方案。此外,用于分类的数字也不是连续的,例如1,3,5,7,9,12,15。

我是R的新手,有人能建议一些不需要嵌套的替代方案吗?

以下代码使用cut将数据向量分成4类(5个break),这是一个带有R内置数据集的示例:

with(mtcars, cut(mpg, seq(min(mpg) * 0.99, 
                          max(mpg) * 1.01, 
                          length = 5)))

请注意,我添加了* 0.99* 1.01,因为如果您将它们设置为数据本身的最小和最大,则等于该最小/最大的数据将被标记为NA

如果你提前知道你的断点,你可以简单地在一个向量(c(break_value1, break_value2, etc))中手动指定它们,而不是使用seq实时生成它们。

最新更新