2017-01-08 93 views
0

我試圖獲取描述性統計信息。我經歷了很多建議。不過,我只想知道是否有任何軟件包對下面提供的數據格式執行描述性統計。r中的描述性統計信息

head(mydata) 
    X A1 A2 A3 M1 M2 M3 U1 U2 U3 
1  A A A M M M U U U 
2 X1 100 200 250 200 230 400 400 100 200 
3 X2 600 300 400 300 550 750 800 900 540 
4 X3 500 300 200 200 200 100 500 400 600 

數據在列上有樣本,在行上有變量。第一行是樣本名稱,第二行是組(A,M,U)。我想獲得每個組的描述性統計信息。例如,對於組A(A1,A2,A3),意思是sd ....任何人都可以請讓我知道我該怎麼做。我已經看到了描述性統計數據的大部分答案,並且它們是針對列的。 如果問題不明確,請讓我知道。 謝謝你的幫助。

希格斯

+0

我會建議花時間去通過這本書:http://r4ds.had.co.nz/ – Phil

+1

您的數據是一個奇怪的格式,或許所有存儲爲文本而不是數字(因爲例如,在同一列中有「A」和「100」)。您最好將數據重新整理爲長格式,其中三個ID列沿着頁面向下 - Col1 =樣本組(A/M/U),然後是Col2 =樣本編號(1/2/3)和Col3 ='X'組(X1/X2/X3)。然後,第四列可以是上述三個ID列的每個組合的「值」。從這個角度來看,事情分析起來要簡單得多 - 這通常是如何將這些數據存儲在關係數據庫設置中的。 – thelatemail

回答

2

@Phil與他的建議是死的權利。

你會在哈德利書中學到的關鍵原則之一是整齊的數據原理(非常基本:列中的變量,行中的個別觀察值)。如果您想快速介紹整潔的數據,請嘗試這個vignette

關於修復和分析數據有多種方法,但這裏有一個使用'tidyverse'工具的例子。

# Load useful 'tidy data' packages 
library(tidyverse) 

# Make 'mydata' 
mydata <- data_frame(X = c('', 'X1', 'X2', 'X3'), 
        A1 = c('A', 100, 600, 500), 
        A2 = c('A', 200, 300, 300), 
        A3 = c('A', 250, 400, 200), 
        M1 = c('M', 200, 300, 200), 
        M2 = c('M', 230, 550, 200), 
        M3 = c('M', 400, 750, 100), 
        U1 = c('U', 400, 800, 500), 
        U2 = c('U', 100, 900, 400), 
        U3 = c('U', 200, 540, 600)) 

# View 'mydata' 
mydata 

# A tibble: 4 × 10 
     X A1 A2 A3 M1 M2 M3 U1 U2 U3 
    <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> 
1   A  A  A  M  M  M  U  U  U 
2 X1 100 200 250 200 230 400 400 100 200 
3 X2 600 300 400 300 550 750 800 900 540 
4 X3 500 300 200 200 200 100 500 400 600 

轉換爲數據幀整齊

# Transpose rows and columns and convert resulting matrix back into a dataframe 
mydata_new <- as_data_frame(t(mydata)) 

# View 'mydata_new' 
mydata_new 

# A tibble: 10 × 4 
     V1 V2 V3 V4 
    <chr> <chr> <chr> <chr> 
1   X1 X2 X3 
2  A 100 600 500 
3  A 200 300 300 
4  A 250 400 200 
5  M 200 300 200 
6  M 230 550 200 
7  M 400 750 100 
8  U 400 800 500 
9  U 100 900 400 
10  U 200 540 600 

# Clean 'mydata_new' 
## Add column names 
colnames(mydata_new) <- c('Group', 'X1', 'X2', 'X3') 
## Remove first row 
mydata_new <- mydata_new[-1, ] 

# View cleaned 'mydata_new' 
mydata_new 

# A tibble: 9 × 4 
    Group X1 X2 X3 
    <chr> <chr> <chr> <chr> 
1  A 100 600 500 
2  A 200 300 300 
3  A 250 400 200 
4  M 200 300 200 
5  M 230 550 200 
6  M 400 750 100 
7  U 400 800 500 
8  U 100 900 400 
9  U 200 540 600 

現在彙總數據。

# Summarise numeric data 
mydata_new %>% 
    # Convert all data columns from 'character' to 'numeric' 
    mutate_at(vars(starts_with('X')), 
       as.numeric) %>% 
    # Group data by the grouping variable before summarising 
    group_by(Group) %>% 
    # Calculate MEAN and SD for each data column 
    summarise_at(vars(starts_with('X')), 
       funs(MEAN = mean, SD = sd)) 

# A tibble: 3 × 7 
    Group X1_MEAN X2_MEAN X3_MEAN  X1_SD X2_SD  X3_SD 
    <chr> <dbl> <dbl> <dbl>  <dbl> <dbl>  <dbl> 
1  A 183.3333 433.3333 333.3333 76.37626 152.7525 152.75252 
2  M 276.6667 533.3333 166.6667 107.85793 225.4625 57.73503 
3  U 233.3333 746.6667 500.0000 152.75252 185.8315 100.00000