我有一张这样的桌子:
a_25 a_26 a_27 a_28 a_29 a_30
ENST00000673902.1 26 38 40 38 36 63
ENST00000618500.4 0 0 0 0 0 0
ENST00000420646.6 0 26 0 115 0 220
ENST00000394991.8 3496 2272 4848 2508 2427 3024
ENST00000336904.7 19 0 40 43 61 0
ENST00000394989.6 0 0 27 0 0 40
ENST00000673766.1 220 274 321 338 248 304
ENST00000673718.1 56 197 603 176 437 43
ENST00000674129.1 743 538 1047 202 276 269
ENST00000345009.8 0 0 0 0 0 0
ENST00000394986.5 85 97 277 10 41 63
ENST00000508895.5 3034 2152 5165 1231 1245 1814
ENST00000506244.5 554 283 276 247 248 182
ENST00000505199.5 0 0 0 0 0 0
ENST00000611107.1 0 0 0 0 0 0
ENST00000502987.5 113 128 213 127 139 144
ENST00000506691.1 212 170 397 87 106 126
ENSRNOT00000039247 1623 1230 2239 1413 1573 1611
ENSRNOT00000118428 0 0 0 106 119 132
我想首先对其进行标准化,然后对我有一个 con1 (样本 a_25 a_26 a_27)和第二个 con2 (样本 a_28 a_29 a_30)的两个条件执行 t 检验。如何在 R 中做到这一点?
我尝试使用 cpm 进行标准化
Norm_count <- edgeR::cpm(Counts,log10 = T)
但结果是奇怪的大数字!什么样的归一化是正确的以及如何对每个 ENST0000X 执行 t 检验让我们说并导出 p 值以查看 R 中条件之间的统计显着性?
apply
为每一行提供一个匿名函数,该函数首先检查每组值的方差,如果不为零,则运行 t 检验。结果将输出到列表中,并且可以像任何其他列表一样访问。
con1_cols <- 1:3
con2_cols <- 4:6
tst_list <- apply(df1, 1L, \(x) {
con1 <- x[con1_cols]
con2 <- x[con2_cols]
if(var(con1) > 0L && var(con2) > 0L) {
t.test(con1, con2)
} else invisible(NULL)
})
tst_list$ENST00000673902.1
#>
#> Welch Two Sample t-test
#>
#> data: con1 and con2
#> t = -1.1312, df = 2.9522, p-value = 0.3414
#> alternative hypothesis: true difference in means is not equal to 0
#> 95 percent confidence interval:
#> -42.23167 20.23167
#> sample estimates:
#> mean of x mean of y
#> 34.66667 45.66667
tst_list[[1]]
#>
#> Welch Two Sample t-test
#>
#> data: con1 and con2
#> t = -1.1312, df = 2.9522, p-value = 0.3414
#> alternative hypothesis: true difference in means is not equal to 0
#> 95 percent confidence interval:
#> -42.23167 20.23167
#> sample estimates:
#> mean of x mean of y
#> 34.66667 45.66667
创建于 2024-04-26,使用 reprex v2.1.0
df1 <- " a_25 a_26 a_27 a_28 a_29 a_30
ENST00000673902.1 26 38 40 38 36 63
ENST00000618500.4 0 0 0 0 0 0
ENST00000420646.6 0 26 0 115 0 220
ENST00000394991.8 3496 2272 4848 2508 2427 3024
ENST00000336904.7 19 0 40 43 61 0
ENST00000394989.6 0 0 27 0 0 40
ENST00000673766.1 220 274 321 338 248 304
ENST00000673718.1 56 197 603 176 437 43
ENST00000674129.1 743 538 1047 202 276 269
ENST00000345009.8 0 0 0 0 0 0
ENST00000394986.5 85 97 277 10 41 63
ENST00000508895.5 3034 2152 5165 1231 1245 1814
ENST00000506244.5 554 283 276 247 248 182
ENST00000505199.5 0 0 0 0 0 0
ENST00000611107.1 0 0 0 0 0 0
ENST00000502987.5 113 128 213 127 139 144
ENST00000506691.1 212 170 397 87 106 126
ENSRNOT00000039247 1623 1230 2239 1413 1573 1611
ENSRNOT00000118428 0 0 0 106 119 132"
df1 <- read.table(text = df1, header = TRUE)
创建于 2024-04-26,使用 reprex v2.1.0