我有一个看起来像这样的数据集:
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 吗?我已经用粘贴功能尝试过这种语法,但没有用。
我们使用unite外mutate
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- 新列的名称,作为字符串或符号。
或者另一种选择是transmute用str_c
library(stringr)
df %>%
transmute(p, Merged = str_c(q, b, a, sep="_"))
Run Code Online (Sandbox Code Playgroud)