Использование следующего фрейма данных:
df <- data.frame(id=c(1324876,2457387,3136822,4607984,5049365,6395867,7847307,8347562,9283756), name=c("Anne","Jack","Bill","Mary","Bill","Mary","Anne","Jack","Mary"), cond1=c(1,0,0,1,0,0,1,1,0), cond2=c(0,1,0,0,1,1,1,0,0))
> df[order(df$name),]
id name cond1 cond2
1 1324876 Anne 1 0
7 7847307 Anne 1 1
3 3136822 Bill 0 0
5 5049365 Bill 0 1
2 2457387 Jack 0 1
8 8347562 Jack 1 0
4 4607984 Mary 1 0
6 6395867 Mary 0 1
9 9283756 Mary 0 0
Допустим, я хочу сохранить только одну строку для имени. Я выберу, какую строку сохранить, основываясь на следующем порядке приоритета:
- Оба условия верны
- Условие 1 истинно
- Условие 2 истинно
- Ни то, ни другое
Теперь вместо добавления флага keep
в строку, которую я хочу сохранить, как бы я сделал столбец keep_instead
для каждого дубликата, который нужно удалить, содержащий id
строки, которая будет сохранена? В этом случае мы получим следующее:
> df[order(df$name),]
id name cond1 cond2 keep_instead
1 1324876 Anne 1 0 7847307
7 7847307 Anne 1 1 NA
3 3136822 Bill 0 0 5049365
5 5049365 Bill 0 1 NA
2 2457387 Jack 0 1 8347562
8 8347562 Jack 1 0 NA
4 4607984 Mary 1 0 NA
6 6395867 Mary 0 1 4607984
9 9283756 Mary 0 0 4607984