在R

时间:2017-03-29 16:51:37

标签: r for-loop chi-squared

您好我正在尝试计算一组数据的Chi Sq值。每组有6或7行,并按标志分组。我有619行和91个标志。因此,对于每个组,我将获得chisq和p值。我想要所有91套的输出,所以我可以将它们粘贴到Excel中。我没有太多的编码,但尝试了一个循环,最终只给我标志的最后一个值。据说我有50左右的警告,但没有按要求放弃输出。以下是摘录:

transaged <- transform(transaged, flag = as.numeric(interaction(HO_GROUP_CODE,START_DATE, drop=TRUE)))
for (i in 1:max(transaged$flag))
{
  survey=as.data.frame(rbind(transaged$CHO,transaged$HO))[transaged$flag==i]
  chisq.test(survey)
  Sys.time()
  chisq.test(survey)$p.value
  result <- cbind(rownames(transaged),chisq.test(survey)$p.value)
    }

我希望输出类似于 1. Chisq 21.34 pvalue 0.9 2. chisq 12.34 pvalue 0.89 等到91

我还希望rownames是转换后的数据框中我的第一列和第二列的组合,因为该标志是通过对它们进行分组而创建的。

所以应该是这样的:

HO_GROUP_CODE(1st entry),START_DATE(1st entry) Chisq 21.34 pvalue 0.9
HO_GROUP_CODE(1st entry),START_DATE(2nd entry) Chisq 21.34 pvalue 0.89

HO_GROUP_CODE  START_DATE  AGE  HO  HO*
1              12th Oct    4    12  23
1              15th Nov    5    23  34
2              16th Dec    6    23  35
.....

HO和HO *是chi测试的比较,而不同的年龄按HO GROUP CODE和START DATE分组。

还请建议我是否可以避免循环。我在这里找到了一些帮助,但无法与我需要的东西联系起来。如果有类似的线程请重定向我。非常感谢!

1 个答案:

答案 0 :(得分:0)

以下是我问过的问题的解决方案

/index.php/400/400