我的数据如下所示:

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


我有一个不同的数据集,将与该数据集合并,其中roundexperiment的每个组合都是唯一的行值,即"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方法,但收到一个类似的错误,告诉我dfname_mix的大小不同。我究竟做错了什么?

最佳答案

您可以使用unite中的tidyr功能

require(tidyverse)

df %>%
  unite(round_experiment, c("round", "experiment"))

  round_experiment   results
1             A_V1  8.797624
2             A_V2  9.721078
3             A_V3 10.519000
4             B_V1  9.714066
5             B_V2  9.952211
6             B_V3  9.642900

关于r - 在dplyr中串联两个文本列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50845474/

10-12 17:24
查看更多