长到宽桌子

时间:2017-02-02 06:33:18

标签: r

对于 n 数目的受试者,我有长格式的神经心理测试分数。我需要通过按测试类型汇总分数来将其转换为广泛但也减少维度。我想要测试组的z分数。

让我们进入MWE。

id <- c("ana","ana", "brad","ana","brad", "matt", "matt")
assessment <- c("memory", "memory", "attention",  "verbal",  "attention", "memory", "attention")
value <- c(0.000,1.000,0.895,0.000,15.000, 3, 5)

mydata<-data.frame(id, assessment, value)

mydata看起来像:

> mydata
    id assessment  value
1  ana     memory  0.000
2  ana     memory  1.000
3 brad  attention  0.895
4  ana     verbal  0.000
5 brad  attention 15.000
6 matt     memory  3.000
7 matt  attention  5.000
  • 如何从长到宽转换?

1 个答案:

答案 0 :(得分:2)

我们可能需要按组

的序列变量
library(dplyr)
library(tidyr)
mydata %>% 
   group_by(id) %>%
   mutate(i1=row_number()) %>% 
   spread(assessment, value)

或使用dcast

中的data.table
library(data.table)
dcast(setDT(mydata), id+rowid(id) ~assessment, value.var = "value")