使用dplyr进行简单的列拆分和连接

时间:2017-08-17 13:24:38

标签: r dplyr plyr

我想知道如何简单地用数据集中的第二个分组变量分割数字列,然后cbind数值列。这很可能是dplyr的单独函数的简单扩展。例如,更改以下X:

Y <- rbind(2,5,3,6,3,2)      
Z <- rbind("A", "A", "A", "B", "B", "B")   
X <- data.frame(Y,Z)   

进入

  A B                   
  2 6      
  5 3    
  3 2

然后理想地将rowMeans提取到一个新的向量中。 (如果在Z中只有一个字符,则会出现问题,因为rowmeans需要2)。

这需要基于Z中的唯一变量的数量无限扩展。例如,如果Z具有A,B和C,则最终的data.frame将需要3列。这将允许我从Z中的无数个组中捕获行均值。

提前致谢,      Conal

1 个答案:

答案 0 :(得分:1)

看起来像tidyr::spread的工作。

library(dplyr)
library(tidyr)

X2 <- X %>%
  group_by(Z) %>%
  mutate(ID = 1:n()) %>%
  spread(Z, Y) %>%
  select(-ID)
X2
# A tibble: 3 x 2
      A     B
* <dbl> <dbl>
1     2     6
2     5     3
3     3     2