2014-09-18 81 views
0

我對R是全新的,我會很感激任何人都會用這些可能很簡單的任務來幫助我。我對所有可用的資源都感到不知所措,我不知道從哪裏開始。表r對多個變量的描述性統計

我的數據看起來是這樣的:

subject sex age nR medL medR  meanL  meanR pL ageBin 
1 0146si 1 67 26 1 1 1.882353 1.5294118 0.5517241 1 
2 0162le 1 72 5 2 1 2   1.25  0.6153846 1 
3 0323er 1 54 30 2.5 3 2.416667 2.5   0.4915254 0 
4 0811ne 0 41 21 2 2 2   1.75  0.5333333 0 
5 0825en 1 44 31 2 2 2.588235 1.8235294 0.5866667 0 

雖然實際數據有變數很多很多科目。

我需要做的第一件事是比較'ageBin'值。 0 = 60歲以下,1 = 60歲以上。我想比較這兩組之間的統計數據。所以我想我需要的第一件事就是能夠識別不同的ageBin值並將它們設置爲兩行。

然後,我需要做一些事情,比如計算兩組數值的頻率(即多少個1和0的實例),「年齡」變量的平均值,年齡變量的中位數,數量的男性(即性別= 1),meanL的均值等。簡單的事情就是這樣。我只是希望他們全都在一張桌子上。

所以潛在的表的例子可能是

  n nMale mAge 
ageBin 0 14  x  x 
ageBin 1 14  x  x 

我可以很容易地做到這一點的東西,在SPSS甚至Excel文檔...我真的不想上手R.因此,任何資源或建議的人可以提供給我指向正確的方向是如此,非常有幫助。對不起,如果這聽起來不清楚......我可以嘗試澄清,如果有必要。

在此先感謝,任何人。

回答

0

使用plyr()包分裂的數據結構,然後應用功能,所有的結果結合到一起。

install.packages("plyr") # install package from CRAN 
library(plyr) # load the package into R 

dd <- list(subject=c("0146si", "0162le", "1323er", "0811ne", "0825en"), 
     sex = c(1,1,1,0,1), 
     age = c(67,72,54,41,44), 
     nR = c(26,5,30,21,31), 
     medL = c(1,2,2.5,2,2), 
     medR = c(1,1,3,2,2), 
     meanL = c(1.882352,2,2.416667,2,2.588235), 
     meanR = c(1.5294118,1.25,2.5,1.75,1.8235294), 
     pL = c(0.5517241,0.6153846,0.4915254,0.5333333,0.5866667), 
     ageBin = c(1,1,0,0,0)) 

dd <- data.frame(dd) # convert to data.frame 

使用ddply功能,你可以做一些事情,如通過Sean Anderson計算兩組

ddply(dd, .(ageBin), summarise, nMale = sum(sex), mAge = mean(age)) 

ageBin nMale  mAge 
0  2   46.33333 
1  2   69.50000 

下面是一個非常有用的資源值的頻率起牀與加快plyr包。
由Hadley Wickham提供的更全面的非常資源包作者可以發現here

+1

這似乎很有幫助。我的實際數據是巨大的,所以手動將它們全部寫入像你這樣的列表是不現實的......有沒有辦法用ddply來解決這個問題? – Socratease 2014-09-19 14:19:12

+0

我這樣做只是爲了模擬目的在我的電腦上。理想情況下,您將使用'read.table'或'read.csv'函數將數據讀入r。 'ddply'是僅用於按照所需格式分割和分組數據的功能。 在你的情況下,你需要沿着'ageBin'變量分組其他變量。簡而言之,ddply的格式是 'ddply(數據集,要分組的變量,適用於分組的函數)'。查看我的帖子中提供的鏈接,他們提供了關於ddply簡潔所需的全部信息。 – 2014-09-20 10:15:08

+0

@Socratease。嗨,請通過upvoting表示讚賞。乾杯 – 2017-07-24 15:56:31

1

嘗試by功能:

如果您的數據幀被命名爲df

by(data=df, INDICES=df$ageBin, FUN=summary)