R初学者:在韦尔奇t检验中循环

时间:2015-01-27 02:25:32

标签: r for-loop

我刚刚开始选择R来帮助一个新的零售项目,虽然我可以提供一些基本功能,但我正在寻找一种更有效地进行销售比较的方法。以下是一个简洁的例子。

我想比较六种不同类型客户的总购买方式(使用6个级别的因子MemberType,每种类型的奖励会员注册一个)。

虽然我当然可以这样做:

>m<-t.test(TotalPurchase[MemberType=='2'],TotalPurchase[MemberType=='4'])

对于每一对,我的目标是避免手动运行每对因子级别的测试。

在这个早期阶段,我从概念上不了解如何解决这个问题。是否可以在唯一因子水平的向量上使用该函数,例如

>tp<-data.frame(levels(MemberType))

?如果是这样,是否有任何关于如何/是否构建嵌套for循环的见解

>for(i in tp) function(i){
>##something like tt<-t.test(TotalPurchase[MemberType==i],##
>##+t.test(TotalPurchase[MemberType==i])##
>+}

附加一层?我还讨论了'apply'系列函数,但是我很难过1)需要两个输入到双样本t.test 2)for()和lapply()参数中的索引语法告诉R在t-test中使用哪个值向量。

这个问题的任何特定帮助或我在R(或Stack Overflow)中格式化的礼貌指导都将受到这位新手的高度赞赏。谢谢!

1 个答案:

答案 0 :(得分:0)

最直接的方法是在pairwise.t.test()包中使用stats

  • 但是你需要清楚什么类型的多重测试调整 你想用来控制你的家庭明智的错误率。所以这是 真的是统计问题,而不是编程问题。你呢 Bonferroni或其他人之间有偏好吗?
  • 您还不清楚是否使用合并差异。
  • 最后,您的数据不清楚。

如果您有一个包含变量的数据框:purchases是衡量变量,MemberType是客户类别,ItemType是项目类别,您希望Bonferroni更正并取消汇总SD,这适用于示例项类型== a:

df <- data.frame(purchases= rnorm(100, 50, 20), 
      MemberType= factor(sample(c("a", "b", "c"), 100, replace= TRUE)),
      ItemType= factor(sample(c("d","e","f"), 100, replace=TRUE))
df2 <- df[df$ItemType == "a", ]
pairwise.t.test(df2$purchases, df2$MemberType, p.adj= "bonf", pool.sd= FALSE)

请提供问题的完整说明,我可以根据需要更新此解决方案。