如何在 R 中重新格式化 table?
How can I reformat a table in R?
我像这样加载了 table:
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 填充。
使用 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 <- 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)
基本 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
我像这样加载了 table:
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 填充。
使用 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 <- 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)
基本 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