我有一个由python语言制作的csv格式应急表,如下所示:
case control
disease_A 20 30
disease_B 35 45
disease_C 42 52
disease_D 52 62现在,我想从这个列联表中推导出2x2列联表,以便使用R来计算卡方值。
如何从上面的应急表导出2x2表,如下所示:
case control
disease_A 20 30
disease_D 52 62这可能是个新手的问题,但我对R并不熟悉,我在其他地方也找不到解决办法
发布于 2014-08-07 06:58:13
这里有个方法。
数据:
txt <- " case control
disease_A 20 30
disease_B 35 45
disease_C 42 52
disease_D 52 62"阅读数据:
dat <- read.table(textConnection(txt))
# case control
# disease_A 20 30
# disease_B 35 45
# disease_C 42 52
# disease_D 52 62提取行的子集:
dat2 <- dat[rownames(dat) %in% c("disease_A", "disease_D"), ]
# case control
# disease_A 20 30
# disease_D 52 62发布于 2014-08-07 07:06:29
如果M属于table类
M <- structure(c(20, 35, 42, 52, 30, 45, 52, 62), .Dim = c(4L, 2L), .Dimnames = list(
c("disease_A", "disease_B", "disease_C", "disease_D"), c("case",
"control")), class = "table")
xtabs(Freq~Var1+Var2,data= subset(as.data.frame(M,stringsAsFactors=F),
Var1%in% c("disease_A", "disease_D")))
Var2
Var1 case control
disease_A 20 30
disease_D 52 62如果M是data.frame
M <- structure(list(case = c(20L, 35L, 42L, 52L), control = c(30L,
45L, 52L, 62L)), .Names = c("case", "control"), class = "data.frame", row.names = c("disease_A",
"disease_B", "disease_C", "disease_D"))
as.table(as.matrix(M[grep("A|D", rownames(M)),]))https://stackoverflow.com/questions/25175935
复制相似问题