lecture
website icon
資料合併
資料檢視 命名編碼 新增變數 資料合併 資料篩選 遺漏值 資料加權
×
website icon 資料管理 統計分析 相關資源 巨人肩膀 語法索引 關於作者

簡介

本部分介紹如何合併資料,使用到的指令包含:

Facebook Icon Twitter Icon LinkedIn Icon LINE Icon

資料合併有三種情況,分別是合併變數、合併個案,以及兩個資料集的合併。

合併變數 / 欄合併

例如在原有的class.RData檔案中,只有name、gender、height這三種變數。可以透過cbind()將weight合併至class當中:

> load(file="c:/Users/USER/downloads/class.RData")
> class
     name gender height
1   Ariel      F    168
2   Kevin      M    188
3   Lewis      M    182
4   Sarah      F    156
5  George      M    170
6   Linda      F    158
7    Anne      F    171
8    Emma      F    160
9   Roger      M    168
10  Bruce      M    174
> weight<-c(51,85,75,44,60,47,56,53,64,69) #創造weight變數
> class_with_weight<-cbind(class,weight) #將weight變數與class資料合併,新的資料集取名為class_with_weight
> class_with_weight
     name gender height weight
1   Ariel      F    168     51
2   Kevin      M    188     85
3   Lewis      M    182     75
4   Sarah      F    156     44
5  George      M    170     60
6   Linda      F    158     47
7    Anne      F    171     56
8    Emma      F    160     53
9   Roger      M    168     64
10  Bruce      M    174     69

合併個案 / 列合併

rbind()也就是row combined,適用於合併新增個案的情況。

為了實際示範rbind()指令,首先先將class_with_weight分為兩個檔案:

> student_female<-class_with_weight[class_with_weight$gender=="F",] #新增只有女生的檔案
> student_male<-class_with_weight[class_with_weight$gender=="M",] #新增只有男生的檔案
> student_female
   name gender height weight
1 Ariel      F    168     51
4 Sarah      F    156     44
6 Linda      F    158     47
7  Anne      F    171     56
8  Emma      F    160     53
> student_female
     name gender height weight
2   Kevin      M    188     85
3   Lewis      M    182     75
5  George      M    170     60
9   Roger      M    168     64
10  Bruce      M    174     69

將student_female與student_male合併為class_all:

> class_all<-rbind(student_female, student_male)
> class_all
     name gender height weight
1   Ariel      F    168     51
4   Sarah      F    156     44
6   Linda      F    158     47
7    Anne      F    171     56
8    Emma      F    160     53
2   Kevin      M    188     85
3   Lewis      M    182     75
5  George      M    170     60
9   Roger      M    168     64
10  Bruce      M    174     69

資料合併

所謂資料合併是指兩個資料集或檔案的合併。要合併之前,必須先確認兩資料集有共同的變數,才有辦法使用merge()作合併。

以class與class_score為例,兩個資料集的共同變數是name:

> load(file="c:/Users/USER/downloads/class.RData")
> load(file="c:/Users/USER/downloads/class_score.RData")
> class
      name gender height
 1   Ariel      F    168
 2   Kevin      M    188
 3   Lewis      M    182
 4   Sarah      F    156
 5  George      M    170
 6   Linda      F    158
 7    Anne      F    171
 8    Emma      F    160
 9   Roger      M    168
 10  Bruce      M    174
> class_score
      name english math
 1   Ariel      90   89
 2   Kevin      96   90
 3   Lewis      97   88
 4   Sarah      89   93
 5  George      77   64
 6   Linda      61   48
 7    Anne      81   60
 8    Emma      73   82
 9   Roger      86   85
 10  Bruce      66   58

現在嘗試用merge()來合併class與class_score:

> class_new<-merge(class, class_score, by="name") #以name為基準點合併兩個資料
> class_new
     name gender height english math
 1    Anne      F    171      81   60
 2   Ariel      F    168      90   89
 3   Bruce      M    174      66   58
 4    Emma      F    160      73   82
 5  George      M    170      77   64
 6   Kevin      M    188      96   90
 7   Lewis      M    182      97   88
 8   Linda      F    158      61   48
 9   Roger      M    168      86   85
 10  Sarah      F    156      89   93