【发布时间】:2018-09-14 11:50:33
【问题描述】:
我有一个类似于下面示例的数据框(这是我实际数据框的一小部分)。
frequencies <- data.frame(sex=c("female", "female", "male", "male", "female", "female", "male", "male", "female", "female", "male", "male", "female", "female", "male", "male"),
ecotype=c("Crab", "Wave", "Crab", "Wave", "Crab", "Wave", "Crab", "Wave", "Crab", "Wave", "Crab", "Wave", "Crab", "Wave", "Crab", "Wave"),
contig_ID=c("Contig100169_2367", "Contig100169_2367", "Contig100169_2367", "Contig100169_2367", "Contig100169_2367", "Contig100169_2367", "Contig100169_2367", "Contig100169_2367",
"Contig100169_2481", "Contig100169_2481", "Contig100169_2481", "Contig100169_2481", "Contig100169_2481", "Contig100169_2481", "Contig100169_2481", "Contig100169_2481"),
allele=c("p", "p", "p", "p", "q", "q", "q", "q", "p", "p", "p", "p", "q", "q", "q", "q"),
frequency=c(157, 98, 140, 65, 29, 8, 26, 9, 182, 108, 147, 80, 46, 4, 49, 4))
我想对“contig_ID”和“ecotype”的每个组合进行单独的卡方列联检验,测试“sex”和“allele”之间的关联。然后我想在一个表格中总结这些结果,其中包括“contig_ID”和“ecotype”的每个组合的 p 值。例如,从给出的示例表中,我希望得到一个包含 4 个 p 值的结果表,如下例所示。
results <- data.frame(ecotype=c("Crab", "Wave", "Crab", "Wave"),
contig_ID=c("Contig100169_2367", "Contig100169_2367", "Contig100169_2481", "Contig100169_2481"),
pvalue=c("pval", "pval", "pval", "pval"))
或者,只需在原始表中添加一个 p 值列也可以,每个组合的 p 值只是在所有相关行中重复。
我一直在尝试将lapply() 和summarise() 等函数与chisq.test() 结合使用来实现这一目标,但到目前为止还没有成功。我也尝试过使用类似的方法:R chi squared test (3x2 contingency table) for each row in a table,但也无法实现。
【问题讨论】:
标签: r tidyverse chi-squared