使用自定义函数聚合数据

时间:2017-02-14 02:31:20

标签: r group-by aggregate

我有一个data.table,它看起来像这样:

Category   Sub-Category     Status
   A            1            Draft
   A            2            Draft
   A            3            Draft
   A            4            Draft
   A            5            Draft
   A            6            Draft
   B            1            Final
   B            2            Draft
   B            3            Final
   B            4            Final
   C            1            Final
   C            2            Final
   C            3            Final
   C            4            Final
   C            5            Final

我想按类别聚合这些数据,以便:

  1. 如果所有子类别都是“草稿”状态
  2. ,则状态为“草稿”
  3. 如果子类别的状态是“草稿”和“最终”的混合,则状态为“混合”
  4. 如果所有子类别都是“最终”状态,则状态为“最终”
  5. 最终输出将如下所示:

    Category   Status
       A       Draft
       B       Hybrid
       C       Final
    

    我知道如果我申请的功能是总和,我可以这样做:

    df <- aggregate(Status ~ Category, data = df, sum)
    

    对我来说问题是这需要某种自定义功能

1 个答案:

答案 0 :(得分:3)

在这里,试试这个..

customFunc <- function(x){

    if (length(unique(as.character(x))) == 2){
        return('Hybrid')
    }

    else {
        return(unique(as.character(x)))
    }

}

df <- aggregate(Status ~ Category, data = df, customFunc)
相关问题