R:基于连续变量从分类变量创建新的分类变量

时间:2019-02-04 14:20:56

标签: r variables split categories

我已经看过here,其中使用了cut函数。但是,鉴于我的情况,我无法提出一个聪明的解决方案。

首先,我当前拥有一些示例数据:

df <- data.frame(Category = LETTERS[1:20]
                 , Nber_within_category = c(rep(1,8), rep(2,3), rep(6,2), rep(10,3), 30, 50, 77, 90)
                 )

我想在第三列中根据Nber_within_category列形成一个新类别。在这个例子中,我该如何做Category_new,使得在每个类别中,Nber_within_category至少为5,并有一个约束,即如果Category已经具有Nber_within_category >= 5,则采用原始类别。

例如,它看起来应该像这样:

df <- data.frame(Category = LETTERS[1:20]
                 , Nber_within_category = c(rep(1,8), rep(2,3), rep(6,2), rep(10,3), 30, 50, 77, 90)
                 , Category_new = c(rep('a',5), rep('b', 4), rep('c',2), LETTERS[12:20])
)

1 个答案:

答案 0 :(得分:1)

有点hack,但是可以用:

<ion-router-outlet></ion-router-outlet>

df %>% mutate(tmp = floor((cumsum(Nber_within_category) - 1)/5)) %>% mutate(new_category = ifelse(Nber_within_category >= 5, Category, letters[tmp+1])) 行是对大小为5的垃圾箱(-1包括总和正好为5的行)进行分类的一种方式,我将其用作索引以获取新类别对于floor((cumsum(Nber_within_category) - 1)/5)

的行

如果您运行以下命令,可能更容易理解Nber_within_category < 5列的定义方式:

tmp