Вот краткая таблица данных:
DT <- data.table(Tag1 = c(22,253,6219,6219,252862,252864,312786,312812),
Tag2 = c(22,255,6220,252857,252863,252865,251191,252863),
Date= as.Date(as.character(c("7/25/2008","6/15/2000","6/30/2000","9/6/2002","9/6/2002","9/6/2002","9/3/2003","9/5/2003")),format = "%m/%d/%Y"))
DT
Tag1 Tag2 Date
1: 22 22 2008-07-25
2: 253 255 2000-06-15
3: 6219 6220 2000-06-30
4: 6219 252857 2002-09-06
5: 252862 252863 2002-09-06
6: 252864 252865 2002-09-06
7: 312786 251191 2003-09-03
8: 312812 252863 2003-09-05
Я хотел бы сортировать таблицу данных в порядке возрастания на 3 столбца: Tag1, Tag2 и Date. Я тестировал:
> test <- DT[order(Tag1, Tag2, Date)]
> test
Tag1 Tag2 Date
1: 22 22 2008-07-25
2: 253 255 2000-06-15
3: 6219 6220 2000-06-30
4: 6219 252857 2002-09-06
5: 252862 252863 2002-09-06
6: 252864 252865 2002-09-06
7: 312786 251191 2003-09-03
8: 312812 252863 2003-09-05
Однако, я хотел бы отсортировать таблицу данных следующим образом:
> test
Tag1 Tag2 Date
1: 22 22 2008-07-25
2: 253 255 2000-06-15
3: 6219 6220 2000-06-30
4: 6219 252857 2002-09-06
5: 252862 252863 2002-09-06
6: 312812 252863 2003-09-05
7: 252864 252865 2002-09-06
8: 312786 251191 2003-09-03
В частности, дублированные значения для Tag1 или Tag1 должны быть расположены один ниже другого (например: 6219 для Tag1 и 252863 для Tag2). Как я могу это сделать?
ИЗМЕНИТЬ
Предлагаемые решения работают для краткой таблицы данных (например, таблица данных выше). Вот более длинная версия:
DT <- data.table(Tag1 = c(252860, 252862, 312812, 252864, 252866, 252868, 252870, 318880, 252872, 252874, 252876, 252878, 252880, 252880, 252881, 252883,
252885, 252887, 311264, 252889, 252889, 252892, 318879, 318880, 318881), Tag2 = c(252861, 252863, 252863, 252865, 252867, 252869, 252871, 252871, 252873,
252875, 252877, 252879, 414611, 905593, 252882, 252884, 252886, 252888, 252888, 252890, 318904, 252893, 318878, 414547, 318882), Date = c("9/6/2002",
"9/6/2002", "9/5/2003", "9/6/2002", "9/6/2002", "9/6/2002", "9/6/2002", "10/8/2003", "9/6/2002", "9/6/2002", "9/6/2002", "9/6/2002", "10/5/2004",
"9/6/2002", "9/6/2002", "9/6/2002", "9/10/2002", "9/10/2002", "7/15/2003", "9/10/2002", "10/15/2003", "9/10/2002", "10/8/2003", "9/29/2004","10/8/2003"))
Вот ожидаемый результат (т.е. data.table "After" ). В частности, таблица данных "После" должна учитывать два условия:
1) строки сортируются по дате в порядке возрастания
2) дублированные значения для Tag1 или Tag1 расположены один ниже другого (в конечном итоге не требуется в порядке возрастания)
Все повторяющиеся значения для Tag1 и Tag2 имеют желтый цвет.