R t检验2组,每组3个重复,每个重复有多个值进行比较
我每组有三个样本。我想使用T检验来比较组之间MappedReadsCPM的值。但是,我有4000个值要按PeakNumber指定的顺序进行比较。 下一行很接近,但它并没有告诉R只比较峰值1,然后只比较峰值2,以此类推R t检验2组,每组3个重复,每个重复有多个值进行比较,r,subset,t-test,R,Subset,T Test,我每组有三个样本。我想使用T检验来比较组之间MappedReadsCPM的值。但是,我有4000个值要按PeakNumber指定的顺序进行比较。 下一行很接近,但它并没有告诉R只比较峰值1,然后只比较峰值2,以此类推 t.test(MappedReadsCPM~Group, data=subset(data2, Group %in% c("1", "2")))$p.value 我不想打印4000个p值——理想情况下,我可以将它们添加到数据帧中 pvalues <- t.t
t.test(MappedReadsCPM~Group, data=subset(data2, Group %in% c("1", "2")))$p.value
我不想打印4000个p值——理想情况下,我可以将它们添加到数据帧中
pvalues <- t.test(MappedReadsCPM~Group, data=subset(data2, Group %in% c("1", "2")))$p.value
您可以使用sapply在数据中的所有唯一峰值上循环,并将数据子集到该特定峰值:
pvalues <- sapply(unique(data2$PeakNumber), function(peak){
t.test(MappedReadsCPM~Group, data=subset(data2, Group %in% c("1", "2") & PeakNumber == peak))$p.value
})
在您的数据中,似乎无法对Group==3运行t测试。因此,我首先对数据进行子集,只保留第1组和第2组
df_12 <- subset(df1, Group != 3)
这将从上述结果中提取p值
pvals <- sapply(t_list, '[[', 'p.value')
pvals
# peak_1 peak_2 peak_3 peak_4
#0.4105493 0.9526529 0.3357703 0.1348856
为了使t测试有意义,您必须去掉Group==3。按PeakNumber拆分数据时,组1、2的行数相同,但组3只有1个数据,无法运行测试。此操作正在运行,但看起来好像正在将PV值保存在列表中。我假设pvalue保持顺序-例如,第一个pvalue来自peak_1,第二个是peak_2?用PeakNumber和pvalue作为列将其保存到新df的最简单方法是什么?我想我是通过以下方法得到的,只要pvalue输出列表的顺序正确。峰值表
sp <- split(df_12, df_12$PeakNumber)
t_list <- lapply(sp, function(DF){
t.test(MappedReadsCPM ~ Group, data = DF)
})
pvals <- sapply(t_list, '[[', 'p.value')
pvals
# peak_1 peak_2 peak_3 peak_4
#0.4105493 0.9526529 0.3357703 0.1348856
rm(df_12, sp)