如何按多个类别重新组织数据框架

时间:2019-06-27 12:53:01

标签: r dataframe data-manipulation

我有一个包含多个组的数据框,这些组出现在各种示例中,并希望按示例进行组织

我有几组具有不同值的变量。每个组都是一个样本的一部分,并且可能会出现在多个样本中(不同样本的值恰好不同),但可能并非如此。 我希望对数据框进行组织,以便每一行都是一个样本,每一列都是一个组,对于没有值的样本,应该添加一个0。

Groups<-sample(1:9,replace = T)
SampData<-data.frame(Group=LETTERS[Groups],Value=sample(1:9,replace = T),Sample=c(1,2,3,1,1,2,2,4,3))

这是一个示例数据框:

   Group Value Sample
1     A     5      1
2     I     5      2
3     A     1      3
4     H     7      1
5     E     7      1
6     D     6      2
7     B     1      2
8     E     4      4
9     B     6      3  

我想对其进行重组,使其看起来像这样:

   A  B  D  E  H  I
1  5  0  0  7  7  0
2  0  1  6  0  0  5
3  1  6  0  0  0  0
4  0  0  0  4  0  0  

1 个答案:

答案 0 :(得分:0)

您可以在dcast中使用reshape2

library(dplyr)
library(reshape2)
set.seed(123)

Groups<-sample(1:9,replace = T)
SampData<-data.frame(Group=LETTERS[Groups],Value=sample(1:9,replace = T),Sample=c(1,2,3,1,1,2,2,4,3))

df <- SampData %>%
  dcast(Sample ~ Group, value.var = "Value", fun.aggregate = sum)