R 同时对多个数据集进行Wilcoxon循环测试

R 同时对多个数据集进行Wilcoxon循环测试,r,loops,statistics,filtering,rna-seq,R,Loops,Statistics,Filtering,Rna Seq,我有一个问题,关于是否可以对生成的所有表在循环中进行Wilcoxon测试 基本上,我想在每个数据集的两个变量之间进行配对Wilcoxon测试,对于每个数据集,这两个变量位于相同的位置(如xth和yth列)。(对于熟悉生物学的人来说,事实上,这是一些重复元素的控制样本和处理样本之间的RPKM值),我希望我能为每个数据集的Wilcoxon检验生成一个p值表 我已准备好使用以下代码生成所有表/数据集/数据帧,我想我想对每个数据集进行Wilcoxon测试,因此我想我需要继续循环,但我不知道如何进行: d

我有一个问题,关于是否可以对生成的所有表在循环中进行Wilcoxon测试

基本上,我想在每个数据集的两个变量之间进行配对Wilcoxon测试,对于每个数据集,这两个变量位于相同的位置(如xth和yth列)。(对于熟悉生物学的人来说,事实上,这是一些重复元素的控制样本和处理样本之间的RPKM值),我希望我能为每个数据集的Wilcoxon检验生成一个p值表

我已准备好使用以下代码生成所有表/数据集/数据帧,我想我想对每个数据集进行Wilcoxon测试,因此我想我需要继续循环,但我不知道如何进行:

data=sample_vs_norm
filter=unique(data$family)

for(i in 1:length(filter)){
  table_name=paste('table_', filter[i], sep="")
  print(table_name)
  assign(table_name, data[data$Subfamily == filter[i]])
以下是单个数据集的结构: 基本上我想在变量“R009_initial_filter_rpkm”和“normal_filter_rpkm”之间做一个Wilcoxon检验


如果我使用了不正确的术语,我很抱歉,因为我是R的新手,非常感谢您的帮助

一种方法是在
data.table中使用
by=
分组

library(data.table)
setDT(data)
data[,wilcox.test(R009_initial_filter_rpkm,
                  normal_filter_rpkm)[c("statistic","p.value")],
     by = TE_Subfamily]
#   TE_Subfamily statistic p.value
#1:       AluYf4       7.5       1
您可以按任意数量的变量进行分组,例如
TE_Subfamily
Chr

data[TE_Subfamily %in% filter,
     wilcox.test(R009_initial_filter_rpkm,
                  normal_filter_rpkm)[c("statistic","p.value")],
     by = .(TE_Subfamily,Chr)]
#   TE_Subfamily   Chr statistic p.value
#1:       AluYf4 chr11         0       1
#2:       AluYf4  chr2         1       1
#3:       AluYf4  chr4         0       1
#4:       AluYf4  chr6         1       1
如果您只需要对某些
TE_子家族
执行比较,您可以尝试以下方法:

filter <- c("AluYf4")
data[TE_Subfamily %in% filter,
     wilcox.test(R009_initial_filter_rpkm,
                  normal_filter_rpkm)[c("statistic","p.value")],
     by = TE_Subfamily]
#   TE_Subfamily statistic p.value
#1:       AluYf4       7.5       1

请编辑您的文章,使最小的重复性的例子。看见你必须包括一些样本数据;4-10行通常就足够了。包括您希望输出外观的示例。认识到:实际上,你的听众中没有人知道或关心RPKM或WIlcox测试,我们不想阅读理解它们所需要的阅读材料。我们想帮助您如何迭代多个单一测试。将所有Wilcox代码包装在一个函数中,并确保它正确执行一个测试。然后编辑您的帖子,询问我们如何迭代所有情况。郭先生,欢迎来到Stack Overflow。我同意David的观点,你的问题应该浓缩成一些简短的内容,如果我们有一个可复制的例子,帮助你会容易得多。然而,我不同意引入问题是无用的。帮助页面甚至还谈到了一个介绍。非常感谢您的评论,我对问题的设置感到抱歉,因为我对编码/关系等方面真的很陌生,就像我以前经常在湿实验室做的那样,我不太知道如何用程序员的语言进行交流。如果我可以的话,我会设法解决它。。。thxI已经对问题进行了修改,请随意发表任何评论/建议/评论,以便我可以向你们学习,非常感谢!!
data[TE_Subfamily %in% filter,
     wilcox.test(R009_initial_filter_rpkm,
                  normal_filter_rpkm)[c("statistic","p.value")],
     by = .(TE_Subfamily,Chr)]
#   TE_Subfamily   Chr statistic p.value
#1:       AluYf4 chr11         0       1
#2:       AluYf4  chr2         1       1
#3:       AluYf4  chr4         0       1
#4:       AluYf4  chr6         1       1
filter <- c("AluYf4")
data[TE_Subfamily %in% filter,
     wilcox.test(R009_initial_filter_rpkm,
                  normal_filter_rpkm)[c("statistic","p.value")],
     by = TE_Subfamily]
#   TE_Subfamily statistic p.value
#1:       AluYf4       7.5       1
data[TE_Subfamily %in% filter,
     wilcox.test(R009_initial_filter_rpkm,
                  normal_filter_rpkm)[c("statistic","p.value")],
     by = TE_Subfamily][,adjusted.p.value := p.adjust(p.value,method = "bonferroni")][]