Удалить целые идентификаторы из кадра данных на основе нескольких условий - PullRequest
2 голосов
/ 18 марта 2020

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

ID  Record date Disease  Fvdate
1   02-03-2012   0     02-03-2012
2   03-03-2013   1     03-03-2013
3   04-03-2014   0     04-03-2014
3   03-03-2015   1     03-03-2015
4   06-06-2016   1     02-03-2012
4   07-06-2017   1     03-03-2013
5   08-05-2018   1     04-03-2014
6   09-06-2019   0     03-03-2015

я хочу, чтобы вывод был

ID  Record date Disease  Fvdate
1   02-03-2012   0    02-03-2012
2   03-03-2013   1    03-03-2013
4   06-06-2016   1    02-03-2012
4   07-06-2017   1    03-03-2013
5   08-05-2018   1    04-03-2014
6   09-06-2019   0    03-03-2015

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

d <- read.table(text = "
ID  Record_date Disease  Fvdate
1   02-03-2012   0     02-03-2012
2   03-03-2013   1     03-03-2013
3   04-03-2014   0     04-03-2014
3   03-03-2015   1     03-03-2015
4   06-06-2016   1     02-03-2012
4   07-06-2017   1     03-03-2013
5   08-05-2018   1     04-03-2014
6   09-06-2019   0     03-03-2015", header = TRUE, stringsAsFactors = FALSE)

1 Ответ

0 голосов
/ 18 марта 2020

Фильтр при условии, что даты не совпадают ИЛИ количество строк в идентификаторе равно 1:

library(dplyr)

d %>% 
  group_by(ID) %>% 
  filter(!Record_date == Fvdate | n() == 1)

#   ID Record_date Disease     Fvdate
# 1  1  02-03-2012       0 02-03-2012
# 2  2  03-03-2013       1 03-03-2013
# 3  4  06-06-2016       1 02-03-2012
# 4  4  07-06-2017       1 03-03-2013
# 5  5  08-05-2018       1 04-03-2014
# 6  6  09-06-2019       0 03-03-2015
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...