Я пытаюсь извлечь из моего фрейма данных R строки, которые имеют одинаковые значения в одном столбце, но в другом столбце есть либо 0, либо 1.
Например, если это фрейм данных:
Data <- data.frame(
+ X = c(1,3,5,7,7,8,9,10,10,11,11),
+ Y = sample(36476545:36476555),
+ timepoint = c(0,1,0,0,1,1,0,1,0,1,1)
+ )
, который выглядит как
> Data
X Y timepoint
1 1 36476549 0
2 3 36476545 1
3 5 36476552 0
4 7 36476547 0
5 7 36476546 1
6 8 36476548 1
7 9 36476551 0
8 10 36476555 1
9 10 36476553 0
10 11 36476554 1
11 11 36476550 1
Мой желаемый вывод - все строки, для которых значения дублируются в X с моментом времени = 0 для одного вхождения значения и 1 для другого вхождения, в результате чего
> Data
X Y timepoint
4 7 36476547 0
5 7 36476546 1
8 10 36476555 1
9 10 36476553 0
Обратите внимание, что последние два элемента данных, которые также дублируются в X, не учитываются, поскольку переменная момента времени равна 1 в обоих случаях.Существует решение в SQL , которое близко, но я не знаю, как его кодировать в R.
Решение Я попытался сначала создать информационный кадр для дубликатов, а затем попытаться получитьте, которые я хочу оттуда:
dupes <- Data[Data$X %in%
Data$X[duplicated(Data$X)],]
ids <- Data$X[Data$timepoint==0]
Data[Data$X %in% ids,]
Но это вернуло строки, которые не имеют повторяющихся записей.Любая помощь будет оценена, спасибо!