r中数据帧内的T检验

时间:2016-06-29 04:36:20

标签: r

我想在数据框中执行独立的t.test

    eyecolor    suncream    moles
1   blue    x   10
2   blue    x   9
3   blue    x   6
4   blue    y   15
5   blue    y   7
6   blue    y   3
7   brown   x   9
8   brown   x   6
9   brown   x   4
10  brown   y   1
11  brown   y   2
12  brown   y   1

这意味着1.根据眼睛颜色进行选择,并且2.对于防晒霜x和y中的nr摩尔,测试t.test。 我能用dplyr选择平均值,例如:

df %>% group_by(eyecolor, suncream) %>% summarize(moles.mean = mean(moles))

为了说清楚,我希望得到一个p值,比较每个eycolor的防晒霜x和y

2 个答案:

答案 0 :(得分:1)

这可能应该在ANOVA背景下进行处理。此外,如果答案不明确,OP应该花一些时间来消化零假设检验和t检验的基本原理。那就是说,这是一个答案:

results = df %>% group_by(eyecolor) %>% summarize(p = t.test(moles[which(suncream == 'x')],moles[which(suncream=='y')])$p.value)

答案 1 :(得分:0)

不要让dplyr太复杂。它对t.test的公式界面不友好,这在这种特殊情况下非常有用。 HEITZ给出了一个明确的回答。比较没有dplyr的版本不仅更具惯用性,而且更简洁的功能更少嵌套括号:

by(df, df$eyecolor, function(subs) t.test(subs$moles ~ subs$suncream))

或者,如果你真的只想看到p值;

by(df, df$eyecolor, function(subs) t.test(subs$moles ~ subs$suncream)$p.value)