eindeutige Zeilen in dplyr : row_number() von tbl_dt inkonsistent, tbl_df

en bref:

Frage ich mich, wie man einzigartige Zeilen aus einer data.table im irgendwo entlang einer dplyr workflow. Seit v0.2, die ich verwenden kann row_number==1 (finden Sie unter: Entfernen Sie doppelte Zeilen mit dplyr)

ABER!

tbl_df(data) %>% group_by(Var1,Var2) %>% filter(row_number() == 1) funktioniert.

tbl_dt(data) %>% group_by(Var1,Var2) %>% filter(row_number() == 1) nicht. ist das ein bug?

setup:

library(dplyr)
library(data.table)
library(microbenchmark)

little <- expand.grid(rep(letters,121),rep(letters,121)) # my 10M row dataset.
tbl_dt(little) %>% group_by(Var1,Var2) %>% filter(row_number() == 1)

Ergebnis:

> Error in rank(x, ties.method = "first") : 
> argument "x" is missing, with no default

dies ist, wie ich eigentlich fand, dass es gebrochen. Ich wurde gefragt:

so oder so?

Ich kann die unique.data.table Methode:

 dt_u <- function() {
           tbl_dt(little) %>% 
           group_by(Var1,Var2) %>% 
           unique(.) %>% 
           tbl_dt(.) }

Kann ich verwenden summarise dann select Weg der neuen col:

dt_ss <- function() {
           tbl_dt(little) %>% 
           group_by(Var1,Var2) %>% 
           summarise( n = n() ) %>% 
           select( -(n) ) }

Kann ich verwenden row_number() == 1 # FUNKTIONIERT NICHT für tbl_dt!

 dt_rn <- function() {
           tbl_dt(little) %>% 
           group_by(Var1,Var2) %>% 
           filter( row_number() == 1 ) }

und so weiter mit der tbl_df() - äquivalente.

benchmarking die entsprechenden Daten.Tabelle /Daten.frame Methoden microbenchmark(...,times=20):

> Unit: milliseconds
>     expr       min        lq    median        uq       max neval
>  dt_ss()  579.0385  618.0002  661.9056  694.0705  764.2221    20
>  dt_u()   690.1284  729.8723  756.5505  783.7379  897.4799    20
>  df_ss()  419.7841  436.9871  448.1717  461.7023  523.2798    20
>  df_u()  3971.1699 4044.3663 4097.9848 4168.3468 4245.8346    20
>  df_rn()  646.1497  687.3472  711.3924  724.6235  754.3166    20
InformationsquelleAutor npjc | 2014-05-25
Schreibe einen Kommentar