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