我的数据如下:
Smoker PtNo Day Hour FEV1 timename
1 0 1 1 0 3.26 d1h0
2 0 1 1 2 3.05 d1h2
3 0 1 1 4 3.02 d1h4
4 0 1 1 6 3.27 d1h6
5 0 1 2 0 3.28 d2h0
6 0 1 2 2 3.07 d2h2
7 0 1 2 4 3.35 d2h4
8 0 1 2 6 3.07 d2h6
9 0 1 3 0 3.28 d3h0
10 0 1 3 2 3.44 d3h2
我想将其重塑为如下的宽格式:
PtNo Smoker FEV1.d1h0 FEV1.d1h2 FEV1d1.h3 etc.
其中PtNo和Smoker以及独立变量不随时间变化,而FEV1是测量的时变变量。我使用reshape
包中的melt
和dcast
/ reshape2
函数收到各种错误消息。有什么建议? (请定制对新手级别的响应。)
答案 0 :(得分:3)
你在找这个吗?
reshape(dat,direction='wide',
idvar=c('Smoker','PtNo'),
v.names='FEV1',
timevar='timename',
drop=c('Day','Hour'))
Smoker PtNo FEV1.d1h0 FEV1.d1h2 FEV1.d1h4 FEV1.d1h6 FEV1.d2h0 FEV1.d2h2 FEV1.d2h4 FEV1.d2h6 FEV1.d3h0 FEV1.d3h2
1 0 1 3.26 3.05 3.02 3.27 3.28 3.07 3.35 3.07 3.28 3.44
答案 1 :(得分:1)
> dcast(df, PtNo + Smoker ~ timename, value.var="FEV1")
PtNo Smoker d1h0 d1h2 d1h4 d1h6 d2h0 d2h2 d2h4 d2h6 d3h0 d3h2
1 1 0 3.26 3.05 3.02 3.27 3.28 3.07 3.35 3.07 3.28 3.44
如果您希望列名与您拥有的完全相同,那么您paste
之前只能timename
“FEV1”到dcast
。 dcast
来自包reshape2
。