Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R t检验2组,每组3个重复,每个重复有多个值进行比较_R_Subset_T Test - Fatal编程技术网

R t检验2组,每组3个重复,每个重复有多个值进行比较

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检验来比较组之间MappedReadsCPM的值。但是,我有4000个值要按PeakNumber指定的顺序进行比较。 下一行很接近,但它并没有告诉R只比较峰值1,然后只比较峰值2,以此类推

    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)