我想将数据帧的每个元素与大小相等的数据帧的各个元素连接起来。这是我需要组合的两个数据帧的示例:
# A tibble: 3 x 2
X Y
<dbl> <dbl>
1 9 5
2 5 10
3 1 4
# A tibble: 3 x 2
X Y
<chr> <chr>
1 (10%) (5%)
2 (3%) (9%)
3 (22%) (9%)
这将是输出:
# A tibble: 3 x 2
X Y
<chr> <chr>
1 9 (10%) 5 (5%)
2 5 (3%) 10 (9%)
3 1 (22%) 4 (9%)
以下是前两个对象的数据:
library(tidyverse)
structure(list(X = c(9, 5, 1), Y = c(5, 10, 4)), row.names = c(NA,
-3L), class = c("tbl_df", "tbl", "data.frame"))
structure(list(X = c("(10%)", "(3%)", "(22%)"), Y = c("(5%)",
"(9%)", "(9%)")), row.names = c(NA, -3L), class = c("tbl_df",
"tbl", "data.frame"))
感谢您的帮助!
答案 0 :(得分:2)
我们可以使用map2
library(purrr)
library(stringr)
map2_df(df1, df2, str_c, sep=" ")
# A tibble: 3 x 2
# X Y
# <chr> <chr>
#1 9 (10%) 5 (5%)
#2 5 (3%) 10 (9%)
#3 1 (22%) 4 (9%)
答案 1 :(得分:1)
使用上面的数据,我很幸运地尝试了以下方法。
注意:我重命名了变量以使绑定和联合调用更加清晰:
library(tidyverse)
dat1 <- structure(list(W = c(9, 5, 1), X = c(5, 10, 4)), row.names = c(NA,
-3L), class = c("tbl_df", "tbl", "data.frame"))
dat2 <- structure(list(Y = c("(10%)", "(3%)", "(22%)"), Z = c("(5%)",
"(9%)", "(9%)")), row.names = c(NA, -3L), class = c("tbl_df",
"tbl", "data.frame"))
dat3 <- cbind(dat1, dat2) %>%
unite('X2', c('W','Y')) %>%
unite('Y2', c('X','Z'))