【问题标题】:Finding unique combinations based only on one of the columns using Alteryx使用 Alteryx 仅基于其中一列查找唯一组合
【发布时间】:2017-03-01 02:20:28
【问题描述】:

我有一个大型数据集的以下示例:

我正在尝试确定哪些颜色是包装独有的,因为它应该显示在独有颜色列上。 我正在使用 Alteryx,但也可以是 R。

我想知道如何评估第二列的颜色是否是第一列的包装所独有的

【问题讨论】:

    标签: r alteryx


    【解决方案1】:

    对于 Alteryx 解决方案:汇总计算每种颜色的不同包装;对于任何颜色,大于 1 的不同包装数基本上意味着您所需的色谱柱为 FALSE。因此:汇总工具、公式工具和连接回您的原始数据。 (见截图)。

    【讨论】:

      【解决方案2】:

      使用dplyr,您可以group_by colour 并检查是否只有一个unique Pack

      library(dplyr)
      
      res <- df %>% group_by(colour) %>% mutate(exclusive.colour=(length(unique(Pack))==1))
      

      使用您的数据,注意PURPLE 的预期结果应该是FALSE,因为它在Packs CD 中:

      print(res)
      ##Source: local data frame [19 x 3]
      ##Groups: colour [11]
      ##
      ##     Pack colour exclusive.colour
      ##   <fctr> <fctr>            <lgl>
      ##1       A  WHITE            FALSE
      ##2       A  BLACK            FALSE
      ##3       B  WHITE            FALSE
      ##4       B  GREEN             TRUE
      ##5       C  WHITE            FALSE
      ##6       C YELLOW             TRUE
      ##7       C  BLACK            FALSE
      ##8       C PURPLE            FALSE
      ##9       C    RED             TRUE
      ##10      C  BLACK            FALSE
      ##11      D PURPLE            FALSE
      ##12      D   BLUE             TRUE
      ##13      D  WHITE            FALSE
      ##14      D  BROWN             TRUE
      ##15      D ORANGE             TRUE
      ##16      D  BLACK            FALSE
      ##17      D  WHITE            FALSE
      ##18      D   LIME             TRUE
      ##19      D   PINK             TRUE
      

      数据:

      df <- structure(list(Pack = structure(c(1L, 1L, 2L, 2L, 3L, 3L, 3L, 
      3L, 3L, 3L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L), .Label = c("A", 
      "B", "C", "D"), class = "factor"), colour = structure(c(10L, 
      1L, 10L, 4L, 10L, 11L, 1L, 8L, 9L, 1L, 8L, 2L, 10L, 3L, 6L, 1L, 
      10L, 5L, 7L), .Label = c("BLACK", "BLUE", "BROWN", "GREEN", "LIME", 
      "ORANGE", "PINK", "PURPLE", "RED", "WHITE", "YELLOW"), class = "factor")), .Names = c("Pack", 
      "colour"), row.names = c(NA, -19L), class = "data.frame")
      ##   Pack colour
      ##1     A  WHITE
      ##2     A  BLACK
      ##3     B  WHITE
      ##4     B  GREEN
      ##5     C  WHITE
      ##6     C YELLOW
      ##7     C  BLACK
      ##8     C PURPLE
      ##9     C    RED
      ##10    C  BLACK
      ##11    D PURPLE
      ##12    D   BLUE
      ##13    D  WHITE
      ##14    D  BROWN
      ##15    D ORANGE
      ##16    D  BLACK
      ##17    D  WHITE
      ##18    D   LIME
      ##19    D   PINK
      

      【讨论】:

        【解决方案3】:

        这个怎么样。

        set.seed(12)
        
        #generate data. Instead of colours I have upper case letters
        d <-  data.frame(pack = rep(letters[1:6], each = 5), 
                         colour = sample(LETTERS[1:10], 30, replace = TRUE), 
                         exclusivecolour = NA)
        
        # For each item in column 'colour', get all items in column 'pack' with that colour. 
        #   If there is 1 unique value, it is exclusive.
        d$exclusivecolour <- sapply(d$colour, function(x) length(unique(d$pack[d$colour == x])) == 1)
        

        【讨论】:

          猜你喜欢
          • 2015-09-06
          • 1970-01-01
          • 2023-01-05
          • 2023-03-15
          • 1970-01-01
          • 1970-01-01
          • 2011-06-28
          • 2017-08-23
          • 1970-01-01
          相关资源
          最近更新 更多