使用 Alteryx 仅基于其中一列查找唯一组合

Finding unique combinations based only on one of the columns using Alteryx

我有以下大型数据集样本:

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

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

这个怎么样。

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)

使用 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

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