我有一个包含两列的数据框a和b,它们要么包含单个字符值,要么包含特定行中值的向量。我想合并两列,以便可以在单个向量中合并两列的值。但是,当我使用粘贴功能时,我无法在单个向量中汇总每一行中的值。 以下是此问题的可重现示例:
library(tibble)
library(tidyverse)
data_frame <-
tribble(
~a, ~b,
50, 3,
17, 50,
c("21", "19"), 50,
c("1", "10"), c("50", "51")
)
data_frame %>%
mutate(new_column = paste(a, b))
#> # A tibble: 4 x 3
#> a b new_column
#> <list> <list> <chr>
#> 1 <dbl [1]> <dbl [1]> "50 3"
#> 2 <dbl [1]> <dbl [1]> "17 50"
#> 3 <chr [2]> <dbl [1]> "c(\"21\", \"19\") 50"
#> 4 <chr [2]> <chr [2]> "c(\"1\", \"10\") c(\"50\", \"51\")"
在new_column
列中,我希望结果如下:
c("50" "3")
c("17" "50")
c("21" "19" "50")
c("1" "10" "50" "51")
有没有一种方法可以组合列a和b来获得上述格式的结果?谢谢。
答案 0 :(得分:0)
要合并两列,可以使用c
。在基数R中,您可以使用Map
进行此操作:
data_frame$new_col <- Map(c, data_frame$a, data_frame$b)
或者在tidyverse
中使用map2
:
library(dplyr)
library(purrr)
data_frame %>% mutate(new_col = map2(a, b, c))
# A tibble: 4 x 3
# a b new_col
# <list> <list> <list>
#1 <dbl [1]> <dbl [1]> <dbl [2]>
#2 <dbl [1]> <dbl [1]> <dbl [2]>
#3 <chr [2]> <dbl [1]> <chr [3]>
#4 <chr [2]> <chr [2]> <chr [4]>