在数据框中创建新列,根据类别变量标记行

时间:2017-03-27 19:03:48

标签: r dplyr

我有一个名为one_plot的数据集,其头部可以在下面看到。我正在尝试使用dplyr包添加一个列来基于他们的subCategory_id标记行。例如,%c(1:4)中的subCategory_id%被标记为“Premium”,%c(4:12)中的subCategory_id%被标记为“Base”,而%c(12:20)中的subCategory_id%被标记为“其他”

product_id product_origin product_price subCategory_id    GBP
          1      Australia    0.36154597              1 371.31
          2            USA    0.14425684              1 148.15
          3            USA    0.09020571              1  92.64
          5            USA    0.35793051              1 367.59
          6            USA    0.19523482              1 200.51

我尝试使用命令

one_plot$cat_type <- filter(one_plot, subCategory_id %in% c(1:4) = "Premium")

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

您可以执行类似

的操作
df <- data.frame(id=1:12, otherStuff = letters[1:12])

df %>% 
    mutate(Label = lapply(id, function(x) {
        if (x %in% c(1:4)) {
            'Premium'
        } else if (x %in% c(5:10)) {
            'Base'
        } else if (x %in% c(11:12)) {
            'other'
        }
    }))

答案 1 :(得分:0)

尝试为新列中的值添加引用df,如下所示:

ref.df <- c(rep("Premium",4),rep("Base",8)) subcat <- seq(1,12,1)

然后使用match获得您想要的内容:

one_plot$cat_type <- ref.df[match(one_plot$cat_type, subcat)]