Am două cadre de date R pe care vreau să le îmbin. În dreapta R poți face:
cost <- data.frame(farm=c('farm A', 'office'), cost=c(10, 100))
trees <- data.frame(farm=c('farm A', 'farm B'), trees=c(20,30))
merge(cost, trees, all=TRUE)
care produce:
farm cost trees
1 farm A 10 20
2 office 100 NA
3 farm B NA 30
Folosesc dplyr
și aș prefera o soluție precum:
left_join(cost, trees)
care produce ceva aproape de ceea ce vreau:
farm cost trees
1 farm A 10 20
2 office 100 NA
În dplyr
pot vedea left_join
, inner_join
, semi_join
și anti-join
, dar niciuna dintre acestea nu face ceea ce face merge
cu all=TRUE
.
De asemenea, există o modalitate rapidă de a seta NA la 0? Eforturile mele de până acum folosind x$trees[is.na(x$trees)] <- 0;
sunt laborioase (am nevoie de o comandă pe coloană) și nu par să funcționeze întotdeauna.
Mulțumiri
plyr::join_all
? - person rawr   schedule 18.02.2014library(zoo); cost %.% merge(trees, all = TRUE) %.% lapply(na.fill, fill = 0) %.% as.data.frame()
- person G. Grothendieck   schedule 18.02.2014DF[is.na(DF)]<-0
va transforma NA la 0 - pedplyr
Cred că nu. - person Stephen Henderson   schedule 18.02.2014outer_join()
, care nu este încă implementat: github.com/hadley/dplyr/issues /96 - person hadley   schedule 18.02.2014merge
pentru moment și voi așteptaouter_join
! - person Racing Tadpole   schedule 18.02.2014