我加载了这样一个表:
V1 V2 V3
pat1 1 2
pat1 3 1
pat1 4 2
pat2 3 3
pat3 1 4
pat3 2 3
我需要将其格式化为如下所示,其中V1表示行,V2表示列,以及V3中的值:
1 2 3 4
pat1 2 0 1 2
pat2 0 0 3 0
pat3 4 3 0 0
请注意,pat1与pat2与pat3的观察次数不同,缺失的值必须用0填充。
答案 0 :(得分:4)
基础R替代方案是使用xtabs
:
xtabs(V3 ~ V1 + V2, mydf)
# V2
# V1 1 2 3 4
# pat1 2 0 1 2
# pat2 0 0 3 0
# pat3 4 3 0 0
或reshape
:
reshape(mydf, direction = "wide", idvar = "V1", timevar = "V2")
# V1 V3.1 V3.3 V3.4 V3.2
# 1 pat1 2 1 2 NA
# 4 pat2 NA 3 NA NA
# 5 pat3 4 NA NA 3
答案 1 :(得分:3)
使用dcast
中的reshape2
:
library(reshape2)
dcast(dat,V1~V2,fill=0)
V1 1 2 3 4
1 pat1 2 0 1 2
2 pat2 0 0 3 0
3 pat3 4 3 0 0
dat是:
dat <- read.table(text='V1 V2 V3
pat1 1 2
pat1 3 1
pat1 4 2
pat2 3 3
pat3 1 4
pat3 2 3',header=TRUE)