Может кто-нибудь, пожалуйста, помогите мне оценить, какой размер фрейма данных с использованием data.table быстрее для поиска? В моем случае использование кадров данных будет 24000 строк и 560 000 строк. Блоки из 40 рядов всегда выделяются для дальнейшего использования.
Пример: DF - это кадр данных с 120 строками, 7 столбцами (от x1 до x7); "строка" занимает первые 40 строк x1.
DF2 - 1000 раз DF = > 120 000 строк
Для размера DF data.table медленнее, для размера DF2 он быстрее.
Код:
> DT <- data.table(DF)
> setkey(DT, x1)
>
> DT2 <- data.table(DF2)
> setkey(DT2, x1)
>
> microbenchmark(DF[DF$x1=="string", ], unit="us")
Unit: microseconds
expr min lq median uq max neval
DF[DF$x1 == "string", ] 282.578 290.8895 297.0005 304.5785 2394.09 100
> microbenchmark(DT[.("string")], unit="us")
Unit: microseconds
expr min lq median uq max neval
DT[.("string")] 1473.512 1500.889 1536.09 1709.89 6727.113 100
>
>
> microbenchmark(DF2[DF2$x1=="string", ], unit="us")
Unit: microseconds
expr min lq median uq max neval
DF2[DF2$x1 == "string", ] 31090.4 34694.74 35537.58 36567.18 61230.41 100
> microbenchmark(DT2[.("string")], unit="us")
Unit: microseconds
expr min lq median uq max neval
DT2[.("string")] 1327.334 1350.801 1391.134 1457.378 8440.668 100