我有这样的矢量:
> agg$RNAtype
[1] "HnRn" "HyRy" "HnRn" "HyRn" "HnRn" "HnRn" "HnRn" "HnRn" "HnRy" "HnRn" "HnRy"
[12] "HnRn"
现在,当我使用表函数时,它提供以下内容:
> table(agg$RNAtype)
HnRn HnRy HyRn HyRy
8 2 1 1
但我想制作一个2x2列联表(以矩阵的形式),其中第一行的值为HnRn和HyRn。第二行将具有HnRy和HyRy的值。我该怎么做?
我最终计划进行费希尔精确测试和chisquare测试。
答案 0 :(得分:1)
vec <- scan(what="")
1: "HnRn" "HyRy" "HnRn" "HyRn" "HnRn" "HnRn" "HnRn" "HnRn" "HnRy" "HnRn" "HnRy"
12: "HnRn"
13:
Read 12 items
您希望对每个项目中的第2个和第4个字符进行交叉分类:
> table(substr(vec,4,4), substr(vec,2,2))
n y
n 8 1
y 2 1
这有点冷,所以使用表格的标签功能来改进注释:
> tbl <- table(`4th`=substr(vec,4,4), `2nd`=substr(vec,2,2))
> tbl
2nd
4th n y
n 8 1
y 2 1
表对象是fisher.test
的合适输入:
> fisher.test(tbl)
Fisher's Exact Test for Count Data
data: tbl
p-value = 0.4545
alternative hypothesis: true odds ratio is not equal to 1
95 percent confidence interval:
0.03405901 351.00812616
sample estimates:
odds ratio
3.463796
答案 1 :(得分:0)
我认为@BonddedDust的答案更好,但是如果你只是想重新排列桌子,那么你可能会做到这一点
matrix(table(agg$RNAtype),nrow=2)
(正如@Henrik在上面的评论中指出的那样,这与?fisher.test
和?chisq.test
中的示例非常类似......)
默认情况下,R在&#34; column-major&#34;中构造矩阵。订单,所以这应该按照你想要的方式获得条目的顺序。