Выявление дубликатов в группах по последней дате - PullRequest
2 голосов
/ 18 апреля 2019

В настоящее время у меня есть фрейм данных, который выглядит следующим образом:

   ID Value       Date
1   1     A   1/1/2018
2   1     B   2/3/1988
3   1     B   6/3/1994
4   2     A  12/6/1999
5   2     B 24/12/1957
6   3     A   9/8/1968
7   3     B  20/9/2016
8   3     C  15/4/1993
9   3     C   9/8/1994
10  4     A   8/8/1988
11  4     C   6/4/2001

Внутри каждого ID Я хотел бы указать строку, в которой есть дубликат Value.Value, который я хотел бы идентифицировать, является дубликатом с самым последним Date.

Полученный фрейм данных должен выглядеть следующим образом:

   ID Value       Date mostRecentDuplicate
1   1     A   1/1/2018                  0
2   1     B   2/3/1988                  0
3   1     B   6/3/1994                  1
4   2     A  12/6/1999                  0
5   2     B 24/12/1957                  0
6   3     A   9/8/1968                  0
7   3     B  20/9/2016                  0
8   3     C  15/4/1993                  0
9   3     C   9/8/1994                  1
10  4     A   8/8/1988                  0
11  4     C   6/4/2001                  0`

Как мне это сделать?

1 Ответ

0 голосов
/ 18 апреля 2019

Используя dplyr, мы можем сначала преобразовать Date в фактическое значение даты, затем group_by ID и Value и присвоить значение 1 в группе, где более 1 строки, а row_number такой же, как номер строки максимум Date.

library(dplyr)

df %>%
  mutate(Date = as.Date(Date, "%d/%m/%Y")) %>%
  group_by(ID, Value) %>%
  mutate(mostRecentDuplicate = +(n() > 1 & row_number() == which.max(Date))) %>%
  ungroup()


# A tibble: 11 x 4
#      ID Value Date       mostRecentDuplicate
#   <int> <fct> <date>                   <int>
# 1     1 A     2018-01-01                   0
# 2     1 B     1988-03-02                   0
# 3     1 B     1994-03-06                   1
# 4     2 A     1999-06-12                   0
# 5     2 B     1957-12-24                   0
# 6     3 A     1968-08-09                   0
# 7     3 B     2016-09-20                   0
# 8     3 C     1993-04-15                   0
# 9     3 C     1994-08-09                   1
#10     4 A     1988-08-08                   0
#11     4 C     2001-04-06                   0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...