Как отсортировать таблицу data.table, используя вектор из нескольких столбцов в R - PullRequest
0 голосов
/ 11 мая 2018

Я довольно новичок в R и пытаюсь создать функцию для сравнения двух наборов данных, для этого мне нужно отсортировать таблицу данных по нескольким столбцам. Я уверен, что где-то будет какая-то помощь, но я не уверенкак искать это.Это мой подход до сих пор:

DT = data.table(x=rep(c("b","a","c"),each=3), y=c(1,3,6), v=1:9)
#column vector
keycol <-c("x","y")

DT[order(keycol)]
   x y v
1: b 1 1
2: b 3 2

Каким-то образом он отображает только 2 строки и удаляет другие записи. Но если я сделаю это:

> DT[order(x,y)]
   x y v
1: a 1 4
2: a 3 5
3: a 6 6
4: b 1 1
5: b 3 2
6: b 6 3
7: c 1 7
8: c 3 8
9: c 6 9

Он работает как жидкость.Может кто-нибудь помочь с сортировкой с использованием вектора имени столбца, любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 11 мая 2018

Вам нужно ?setorderv.

library(data.table)
DT = data.table(x=rep(c("b","a","c"),each=3), y=c(1,3,6), v=1:9)
#column vector
keycol <-c("x","y")
setorderv(DT, keycol)
DT
   x y v
1: a 1 4
2: a 3 5
3: a 6 6
4: b 1 1
5: b 3 2
6: b 6 3
7: c 1 7
8: c 3 8
9: c 6 9

Обратите внимание, что нет необходимости назначать выход setorderv обратно на DT.Функция обновляет DT по ссылке.

...