studio sheet meaning example cheat r dataframe dplyr

sheet - tidyr r



¿Hay un método R dplyr para fusionar con all=TRUE? (2)

La versión más reciente de dplyr (0.4.0) ahora tiene una opción full_join, que es lo que creo que quieres.

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)

Devoluciones

> merge(cost, trees, all=TRUE) farm cost trees 1 farm A 10 20 2 office 100 NA 3 farm B NA 30

Y

library(dplyr) full_join(cost, trees)

Devoluciones

> full_join(cost, trees) Joining by: "farm" farm cost trees 1 farm A 10 20 2 office 100 NA 3 farm B NA 30 Warning message: joining factors with different levels, coercing to character vector

Tengo dos marcos de datos R que quiero fusionar. En recta R puedes hacer:

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)

que produce:

farm cost trees 1 farm A 10 20 2 office 100 NA 3 farm B NA 30

Estoy usando dplyr , y preferiría una solución como:

left_join(cost, trees)

que produce algo cercano a lo que quiero:

farm cost trees 1 farm A 10 20 2 office 100 NA

En dplyr puedo ver left_join , inner_join , semi_join y anti-join , pero ninguno de estos hace lo que merge con all=TRUE .

Además, ¿hay una manera rápida de establecer las NA en 0? Mis esfuerzos hasta ahora usando x$trees[is.na(x$trees)] <- 0; son laboriosos (necesito un comando por columna) y no siempre parecen funcionar.

Gracias


library(plyr) > dat <- join(cost, trees, type = "full") Joining by: farm > dat farm cost trees 1 farm A 10 20 2 office 100 NA 3 farm B NA 30 > dat[is.na(dat)] <- 0 > dat farm cost trees 1 farm A 10 20 2 office 100 0 3 farm B 0 30