r - merge data frames by character and rowname -
i have 2 data frames this:
set.seed(1) df1 <- data.frame(v1 = rnorm(7), v2 = c("a1", na, "a2", "a3", "a5", "a6", "a9")) > df1 v1 v2 1 0.39956187 a1 2 0.33711756 <na> 3 -0.19583763 a2 4 0.04880812 a3 5 -2.07266374 a5 6 -0.83824743 a6 7 1.31302096 a9 df2 <- data.frame(pc1 = rnorm(5), pc2 = rnorm(5)) rownames(df2) <- c("a1", "a2", "a3", "a6", "a9") > df2 pc1 pc2 a1 -0.89865755 -0.32949632 a2 -0.05709327 -0.06923935 a3 -0.44229588 0.32089049 a6 -1.51754734 -0.34285758 a9 0.99955141 -0.62749542 df1 has column v2 contains character values match rownames of df2. has nas , may contains characters no corresponding rownames in df2 exists.
i want merge these data frames one, this:
v1 v2 pc1 pc2 1 0.39956187 a1 -0.89865755 -0.32949632 2 0.33711756 na na na 3 -0.19583763 a2 -0.05709327 -0.06923935 4 0.04880812 a3 -0.44229588 0.32089049 5 -2.07266374 a5 na na 6 -0.83824743 a6 -1.51754734 -0.34285758 7 1.31302096 a9 0.99955141 -0.62749542 how can this. prefer dplyr (tydiverse) solution.
we can use rownames_to_column create column row names , left_join
library(tidyverse) rownames_to_column(df2, "v2") %>% left_join(df1, .)
Comments
Post a Comment