2017-06-07 33 views
0

在R中,我想運行統計測試來比較兩個類別之間的平均值,但我不知道如何組織我的數據來完成此操作。我想運行一個t檢驗,我應該如何組織我的數據來做到這一點?

模擬例如

我的數據的組織,如:

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") 

我想要做的是比較有韋爾奇t檢驗每個性別的平均,回答「做女年齡與男性年齡有顯着差異?「。

理論上,運行測試,我覺得我的數據應該是形式:

male female 
39 45 
83 61 
... 

我敢肯定有可以是一個辦法直接在原表或一個簡單的方式運行測試將我的數據轉換成這種形式...

那麼,我該如何繼續?

+0

您的原始數據框中是否有相同數量的女性和男性? – Masoud

+0

不,我實際上有很多分類變量,我想比較年齡(不一定是像性別這樣的二進制) – francoiskroll

+0

關於分組數據和詢問它的標題是誤導性的。這是一個[XY問題](https://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)。我建議專注於t檢驗和如何執行它。 – Masoud

回答

2

如果df是你的數據集,你可以做

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

並且不需要重新組織數據。

1

我會用漂亮的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 
相關問題