У меня есть data.frame с 50 000 строк с некоторыми дубликатами, которые я хотел бы удалить.Удаление дубликатов из фрейма данных очень быстро
SYMBOL INTENSITY CALL VALUE
1 DDR1 2464.3023 P 0.00016023613
2 RFC2 496.5190 P 0.0193034606
3 HSPA6 733.4763 P 0.0008046637
4 PAX8 2138.2882 P 0.0005617505
5 GUCA1A 176.3272 A 0.1896873022
6 UBA7 729.6157 P 0.0170004527
7 DDR1 2464.3023 P 0.0016023613
8 RFC2 496.5190 P 0.0593034606
9 HSPA9 733.4763 P 0.0008046637
10 PAX8 2138.2882 P 0.15617505
11 GUCA1A2 176.3272 A 0.01896873022
12 UBA8 729.6157 P 0.0170004527
Я использовал следующий, чтобы удалить дубликаты. В четвертой колонке я сохранил тот, у кого минимум «VALUE».
dt <- data.table(df)
WoDuplic <- dt[,.SD[which.min(VALUE)],by=list(SYMBOL)]
Это служит цели, но очень медленно, она занимает аппроксимационно 10 секунд, чтобы удалить дубликаты из data.frame из выше размерности. Есть ли способ ускорить процесс?
Отредактировано: Вывод выглядит
SYMBOL INTENSITY CALL VALUE
1 DDR1 2464.3023 P 0.00016023613
2 RFC2 496.5190 P 0.0193034606
3 HSPA6 733.4763 P 0.0008046637
4 PAX8 2138.2882 P 0.0005617505
5 GUCA1A 176.3272 A 0.1896873022
6 UBA7 729.6157 P 0.0170004527
9 HSPA9 733.4763 P 0.0008046637
11 GUCA1A2 176.3272 A 0.01896873022
12 UBA8 729.6157 P 0.0170004527
Так они только дублированные WRT первые 3 колонки , это правильно? – jbaums
@ jbaums Не обязательно со всеми, но всегда по первому столбцу –
Как насчет 'setorder (dt, VALUE); дт [! дублируется (SYMBOL)] '? –