【发布时间】:2018-11-23 12:32:05
【问题描述】:
我的数据如下所示:
round <- c(rep("A", 3), rep("B", 3))
experiment <- rep(c("V1", "V2", "V3"), 2)
results <- rnorm(mean = 10, n = 6)
df <- data.frame(round, experiment, results)
> df
round experiment results
1 A V1 9.782025
2 A V2 8.973996
3 A V3 9.271109
4 B V1 9.374961
5 B V2 8.313307
6 B V3 10.837787
我有一个不同的数据集,它将与这个数据集合并,其中round 和experiment 的每个组合都是一个唯一的行值,即"A_V1"。所以我真正想要的是一个变量name,它将两列连接在一起。然而,这在 dplyr 中比我预期的更难做到。我试过了:
name_mix <- paste0(df$round, "_", df$experiment)
new_df <- df %>%
mutate(name = name_mix) %>%
select(name, results)
但我得到了错误,Column name must be length 1 (the group size), not 6。我还尝试了 cbind(df, name_mix) 的简单 base-R 方法,但收到类似的错误,告诉我 df 和 name_mix 的大小不同。我做错了什么?
【问题讨论】:
-
使用
new_df <- df %>% mutate(name=paste0(round, "_", experiment))。尽管如果我复制/粘贴您的代码,我将无法重现该错误。你确定没有错别字吗? -
@MrFlick 我根本没有收到错误消息,所以有点困惑......也许更新
dplyr? -
检查了我的代码(来自 IRL,而不是上面的示例),因为拼写错误,所以我不认为是这样。如下所示,使用
unite似乎可行。
标签: r dplyr string-concatenation