Z pewnością nie jest to przeznaczone? Czy jest to coś, co dzieje się w innych częściach funkcjonalności dplyr
i czy powinienem się tym przejmować? Uwielbiam wydajność i nienawidzę składni data.table
. Czy istnieje alternatywa dla dplyr
i data.table
, która jest obecnie bezpieczna w użyciu i wciąż wysoka?Nieprawidłowe zachowanie przy użyciu left_join dplyr?
A <- structure(list(ORDER = c(30305720L, 30334659L, 30379936L,
30406397L, 30407697L, 30431950L),
COST = c("0", "", "11430.52", "20196.279999999999", "0", "10445.99")),
.Names = c("ORDER", "COST"),
row.names = c(NA, 6L),
class = "data.frame")
B <- structure(list(ORDER = c(30334659, 30379936, 30406397, 30407697, 30431950),
AREA = c(0, 2339, 2162, 23040, 475466)),
.Names = c("ORDER", "AREA"),
row.names = c(4L, 8L, 11L, 12L, 15L),
class = c("tbl_df", "tbl", "data.frame"))
wyniki śmiecie:
left_join(A, B)
ORDER COST AREA
1 30305720 0 NA
2 30334659 NA
3 30379936 11430.52 NA
4 30406397 20196.279999999999 NA
5 30407697 0 NA
6 30431950 10445.99 NA
wyniki życie:
merge(A, B, all.x=T, all.y=F)
ORDER COST AREA
1 30305720 0 NA
2 30334659 0
3 30379936 11430.52 2339
4 30406397 20196.279999999999 2162
5 30407697 0 23040
6 30431950 10445.99 475466
Używam wersji R 3.1. – stanekam
Uwaga ta wydaje się być tutaj ponownie przyznana https://github.com/hadley/dplyr/issues/601 – mnel
Zwróć uwagę, że składnia 'data.table'' setDT (A); setDT (B); setkey (A, ORDER) ; setkey (B, ORDER); A [B] 'działa, aby zapewnić" efektywne wyniki ". 'data.table' sprawia, że klucze/grupy są równe w granicach tolerancji maszyny. – mnel