На данный момент данный вопрос не ответил here, но не смог заставить его работать.Удалите повторяющиеся строки
У меня есть кадр данных, который интересует удаление повторяющихся строк на основе SYMBOL
. Проверка столбца CALL
для удаления дубликатов. Приоритет P>A>M
. Если P,A,M
держать P
, если A,M
, держите A
, в противном случае M
.
SYMBOL INTENSITY CALL
1 DDR1 596.95050 P
2 RFC2 420.28708 P
3 HSPA6 510.73254 P
4 DDR1 1717.99487 A
5 GUCA1A 121.53488 A
6 UBA7 1810.49780 P
7 UBA7 301.51944 M
8 GUCA1A 34.53987 A
9 CCL5 5966.24609 P
10 CYP2E1 95.15707 A
11 CYP2E1 164.95276 M
12 ESRRA 1024.88745 P
13 CYP2A6 502.48877 A
14 GAS6 921.70923 P
15 MMP14 524.96863 A
16 GAS6 3069.48462 P
17 FNTB 266.77686 A
18 PLD1 187.65569 A
19 PLD1 1891.04541 P
20 PLD1 258.79028 M
Я попытался код, который я нашел Here
library(data.table)
setDT(df)[, list(CALL=CALL[which.min(factor(CALL, levels=c('P', 'A', 'M')))]),
.(SYMBOL)]
Но я удаляю второй столбец INTENSITY
. Любая помощь, пожалуйста, убедитесь, что код также самый быстрый. Благодаря
Ожидаемый результат
SYMBOL INTENSITY CALL
1 DDR1 596.95050 P
2 RFC2 420.28708 P
3 HSPA6 510.73254 P
5 GUCA1A 121.53488 A
6 UBA7 1810.49780 P
9 CCL5 5966.24609 P
10 CYP2E1 95.15707 A
12 ESRRA 1024.88745 P
13 CYP2A6 502.48877 A
14 GAS6 921.70923 P
15 MMP14 524.96863 A
17 FNTB 266.77686 A
19 PLD1 1891.04541 P