【问题标题】:How can I reformat a table in R?如何在 R 中重新格式化表格?
【发布时间】:2015-03-06 00:45:32
【问题描述】:
我加载了一个这样的表:
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 vs. pat2 vs. pat3 有不同数量的观察值,缺失值必须用 0 填充。
【问题讨论】:
标签:
r
statistics
reformatting
【解决方案1】:
基本的 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
【解决方案2】:
使用来自reshape2 的dcast:
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)