unite 返回错误“没有适用于 'unite_' 的方法应用于类“c('double','numeric')”的对象

joh*_*ohn 3 r

我有一个看起来像这样的数据集:

p = c(3, 4, 5, 6, 7)
q = c("fr", "", "fr", "fe", "fre")
b = c(1, "", 1, "", 1)
a = c("r", "f", "b", "m", "p")

df=data.frame(p, q, b, a)
Run Code Online (Sandbox Code Playgroud)

我想将q、b和a联合起来,并将结果放在一个新列中,所以我使用了unite:

new_df <- df %>% 
  mutate(Merged = unite(q,b,a), sep = "_")
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

UseMethod("unite_") 中的错误:
没有适用于 'unite_' 的方法应用于类 "c('double', 'numeric')"

此外,独立于上述问题,如何在代码中指定一系列列,以便我不必手动输入所有列(我想合并数十列)。我可以将q:aq 列写入a 吗?我已经用粘贴功能尝试过这种语法,但没有用。

akr*_*run 5

我们使用unitemutate

library(dplyr)
library(tidyr)

df %>% 
     unite(Merged, q, b, a, sep= "_")
Run Code Online (Sandbox Code Playgroud)

的用法unite

unite(data, col, ..., sep = "_", remove = TRUE, na.rm = FALSE)

在哪里

col - 新列的名称,作为字符串或符号。


或者另一种选择是transmutestr_c

library(stringr)

df %>%
    transmute(p, Merged = str_c(q, b, a, sep="_"))
Run Code Online (Sandbox Code Playgroud)