我想 运行 进行 t 检验,我应该如何组织我的数据才能这样做?

I want to run a t-test, how should I organise my data to do so?

在 R 中,我想 运行 统计测试来比较两个类别之间的平均值,但我不知道如何组织我的数据。

模拟示例

我的数据组织如下:

structure(list(age = c(39, 45, 83, 68, 48, 52, 66, 50, 61, 67), gender = 
structure(c(2L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 2L), .Label = c("female", 
"male"), class = "factor")), .Names = c("age", "gender"), row.names = c(NA, 
10L), class = "data.frame")

我想做的是将每个性别的平均值与 Welch t 检验进行比较,回答问题 "do women's ages are significantly different from men's ages?"。

理论上,为了运行测试,我想我的数据应该是这样的形式:

male  female
39    45
83    61
...

我确定有一种方法可以 运行 直接在原始 table 上进行测试,或者有一种简单的方法可以将我的数据转换成这种形式...

那么,我该如何进行呢?

我会选择漂亮的data.table: 假设 dtdata.tabledt<-data.table(dataBase),即):

library(stats)
library(data.table)

dt[,t.test(age),by=gender]

导致:

   gender statistic parameter      p.value  conf.int estimate null.value alternative            method data.name
1:   male  11.73781         7 7.373447e-06  47.21406   59.125          0   two.sided One Sample t-test       age 
2:   male  11.73781         7 7.373447e-06  71.03594   59.125          0   two.sided One Sample t-test       age
3: female   6.62500         1 9.537357e-02 -48.64964   53.000          0   two.sided One Sample t-test       age
4: female   6.62500         1 9.537357e-02 154.64964   53.000          0   two.sided One Sample t-test       age

如果df是你的数据集,你可以做

t.test(age ~ gender, data=df, alternative='two.sided')

而且不需要重新组织数据。