在 r 中将数据框从长数据框转换为宽数据框,但需要进行日期转换

transform a dataframe from long to wide in r, but needs date transformation

我有一个这样的数据框(每个 "NUMBER" 表示一个学生):

NUMBER  Gender  Grade Date.Tested   WI  WR  WZ
1       F       4     2014-02-18    6   9   10
1       F       3     2014-05-30    9   8   2
2       M       5     2013-05-02    7   9   15
2       M       4     2009-05-21    5   7   2
2       M       5     2010-04-29    9   1   4

我知道我可以使用:

cook <- reshape(data, timevar= "?", idvar= c("NUMBER","Gender"), direction = "wide")

将其更改为宽格式。但是,我想删除 date.tested 到时间(第 1 次,第 2 次...等),并注明成绩。

最后我想要的是这样的:

NUMBER  Gender Grade1 Grade 2 Grade 3 WI1  WR1  WZ1  WI2  WR2  WZ2 WI3  WR3  WZ3
1       F       3      4       NA     9    8     2   6      9   10   NA   NA   NA

其余 "NUMBER"s。

我搜索了很多但没有找到答案。有人可以帮我吗?

非常感谢!

尝试

 data$id <- with(data, ave(seq_along(NUMBER), NUMBER, FUN=seq_along))
 reshape(data, idvar=c('NUMBER', 'Gender'), timevar='id', direction='wide')

如果您希望 Date.Tested 变量包含在 'idvar' 中并且您只需要组的第一个值('NUMBER' 或 'GENDER')

 data$Date.Tested <- with(data, ave(Date.Tested, NUMBER,
                           FUN=function(x) head(x,1)))
 reshape(data, idvar=c('NUMBER', 'Gender', 'Date.Tested'), 
                timevar='id', direction='wide')