Уникальная комбинация на группу - PullRequest
0 голосов
/ 12 июня 2018

У меня есть DT с тремя столбцами, и два первых имеют различные значения, сгруппированные по группам.

ID            ID_2                    Group
23201600101793 2016052016051062331    A
23201600101793 2016062016061017838    A
23201600101794 2016052016051062331    A
23201600101794 2016052016051062402    A
23201600103090 2016052016051062325    A
23201600103090 2016052016051062408    A
23201600803366 2016052016051062325    A
23201600803366 2016052016051062408    A

Мне нужно найти уникальную комбинацию обоих столбцов без повторяющихся значений в любом столбце.Мое желание вывода для группы A:

ID            ID_2                    Group
23201600101793 2016052016051062331    A
23201600101794 2016052016051062402    A
23201600103090 2016052016051062325    A
23201600803366 2016052016051062408    A

Строки 3 и 7 были удалены, поскольку они имеют повторяющиеся значения в столбце ID_2 в строках 1 и 5 соответственно.Строки 2, 4, 6 и 8 были удалены, поскольку они повторяют значения из идентификатора столбца в строках 1, 3, 5, 7.

Шаблон по группам отсутствует, они могут иметь много строк с одинаковымиID или ID_2.

Например, из группы BI просто нужно 2 строки, поскольку ID имеет два уникальных значения.Выбранные строки могут быть первыми (я имею в виду, что все строки ID_2, кроме первой, будут отброшены, поскольку первая строка имеет два уникальных значения)

ID            ID_2                 Group
23201600009182 2016042016041000942 B
23201600009182 2016042016041000943 B
23201600009182 2016042016041000946 B
23201600009182 2016042016041000949 B
23201600009182 2016042016041000950 B
23201600009182 2016042016041000951 B
23201600009182 2016042016041000953 B
23201600009182 2016042016041000954 B
23201600009182 2016042016041000956 B
23201600009182 2016042016041000957 B
23201600009182 2016042016041000958 B
23201600669635 2016052016051003624 B
23201600669635 2016052016051003626 B
23201600669635 2016052016051003628 B
23201600669753 2016012016011000791 B
23201600669753 2016012016011000797 B

Желаемый вывод группы B

23201600009182 2016042016041000942 B   
23201600669635 2016052016051003624 B

Я ценю любую помощь.

1 Ответ

0 голосов
/ 12 июня 2018

Насколько я понимаю, вы хотите, чтобы Group & ID были уникальными.

Вы можете использовать distinict в dplyr:

library(dplyr)

#sample data
set.seed(123)
sample_data <- tibble(ID = sample(1:4,size = 10,replace = T),
                      ID2 = sample(1:4,size = 10,replace = T),
                      group = sample(c("A","B"),size = 10,replace = T))

Пример данных:

> sample_data
# A tibble: 10 x 3
ID   ID2 group
<int> <int> <chr>
    1     2     4 B    
2     4     2 B    
3     2     3 B    
4     4     3 B    
5     4     1 B    
6     1     4 B    
7     3     1 B    
8     4     1 B    
9     3     2 A    
10     2     4 A   

#sample result
distinct(sample_data,ID,group,.keep_all=T)

пример результата:

# A tibble: 6 x 3
ID   ID2 group
<int> <int> <chr>
    1     2     4 B    
2     4     2 B    
3     1     4 B    
4     3     1 B    
5     3     2 A    
6     2     4 A  
...