我刚刚开始选择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)中格式化的礼貌指导都将受到这位新手的高度赞赏。谢谢!
答案 0 :(得分:0)
最直接的方法是在pairwise.t.test()
包中使用stats
。
如果您有一个包含变量的数据框: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)
请提供问题的完整说明,我可以根据需要更新此解决方案。