将3列数据框转换为矩阵-更改相似列的名称

时间:2019-05-16 15:30:37

标签: r dataframe matrix

我有一个3列的数据框,我尝试将其转换为矩阵。

Name    Act   value
Alex    C1     100
John    C2     100
Matt    C3     252
Alex    C1     456
Alex    C5     234
John    C5     456
Tina    C2     897
Matt    C2     652
Jorge   C1     344
Alex    C1     34
Matt    C3     231

我想要类似的东西

       C1   C1.1  C1.2   C2   C3  C3.1   C4   C5
Alex   100   456   34                        234
John                     100                 456
Matt                     652  252  231  
Tina                     897
Jorge  344

我的意思是,由于我使用相似的名称,使同一行为具有不同/相同的分数,因此,我不想将这些值相加并将其放入矩阵的单元格中,而是针对该行为生成单独的列(名称末尾的数字)。 谢谢

1 个答案:

答案 0 :(得分:0)

使用tidyverse,您可以执行以下操作:

df %>%
 group_by(Name) %>%
 mutate(Act = make.unique(Act)) %>%
 spread(Act, value)

  Name     C1  C1.1  C1.2    C2    C3  C3.1    C5
  <chr> <int> <int> <int> <int> <int> <int> <int>
1 Alex    100   456    34    NA    NA    NA   234
2 John     NA    NA    NA   100    NA    NA   456
3 Jorge   344    NA    NA    NA    NA    NA    NA
4 Matt     NA    NA    NA   652   252   231    NA
5 Tina     NA    NA    NA   897    NA    NA    NA