连接R中数据帧的每个元素

时间:2019-10-15 15:39:41

标签: r merge concat

我想将数据帧的每个元素与大小相等的数据帧的各个元素连接起来。这是我需要组合的两个数据帧的示例:

# 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"))

感谢您的帮助!

2 个答案:

答案 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'))