У меня есть данные следующим образом:
eg_data <- data.frame(
id = c(1,1,1,1,1,2,2,2,2,2,3,3,3,3,3,4,4,4,4,4),
date = c("11/1", "11/1", "11/2", "11/1", "11/5", "11/5", "11/4", "11/5", "11/4", "11/2", "11/4", "11/3", "11/3", "11/2", "11/3", "11/2", "11/1", "11/1", "11/2", "11/3"),
sales = c(2,3,2,3,4,5,4,5,6,2,3,4,7,6,5,4,6,4,3,5),
dupes = c(F,T,F,T,F,F,F,T,T,F,F,F,T,F,T,F,F,T,T,F),
dupes2 = c(F,F,F,T,F,F,F,T,F,F,F,F,F,F,F,F,F,F,F,F))
дубликаты - дубликаты по дате, dupes2 - дубликаты по дате + продажи
Мне нужно отметить все случаи, где dupes = TRUE и dupes2 =ЛОЖНЫЙ.Мне нужно, чтобы это было сделано на уровне ID, т.е. это условие существует один раз для id = 1, каждая строка, где id = 1, будет помечена как результат.
Я пробовал что-то вроде:
eg_data <- eg_data %>% group_by(id, dupes=TRUE, dupes2=FALSE) %>% mutate(flag=1)
Это, очевидно, не работает, но это идея.Для всех идентификаторов, в которых есть какая-либо строка, где dupe = T и dupe2 = F, пометите все итерации этого идентификатора с помощью 1.
Конечным результатом будут данные, приведенные выше, в столбце с именем flag, который = 1, b /c для каждого идентификатора 1-4 существует хотя бы одна строка, в которой dupes = T и dupes2 = F. Мне нужно добавить столбец в набор данных, а не фильтровать его в список для печати, а не создавать отдельный набор данных.
Я рассмотрел
dplyr group_by логические значения
и
Функции группировки (tapply, by, aggregate) и* Применимая семья
, но и не сделал это для меня.
Любая помощь приветствуется.