Re: [問題] 多個檔案合併 取聯集
一般來說,合併data.frame(Table)有以下數種方法:
- Outer Join, 就是你所謂的取聯集
- Inner Join, 取交集
- Left Outer Join
- Right Outer Join
- Cross Join
在R中,都可以透過merge指令簡單完成
以下是一個簡單的Demo
```r
file_1 <- data.frame(
  name = c("A", "B", "D"),
  day1 = c(23, 45, 100))
file_2 <- data.frame(
  name = c("A", "C", "D"),
  day2 = c(77, 11, 35))
# inner join
# 只取交集
merge(x = file_1, y = file_2, by = "name")
```
```
##   name day1 day2
## 1    A   23   77
## 2    D  100   35
```
```r
# outer join
# 取聯集
merge(x = file_1, y = file_2, by = "name", all = TRUE)
```
```
##   name day1 day2
## 1    A   23   77
## 2    B   45   NA
## 3    D  100   35
## 4    C   NA   11
```
```r
# left outer join
# 把y 貼到 x
merge(x = file_1, y = file_2, by = "name", all.x = TRUE)
```
```
##   name day1 day2
## 1    A   23   77
## 2    B   45   NA
## 3    D  100   35
```
```r
# right outer join
# 把x 貼到 y
merge(x = file_1, y = file_2, by = "name", all.y = TRUE)
```
```
##   name day1 day2
## 1    A   23   77
## 2    D  100   35
## 3    C   NA   11
```
```r
# cross join
# 展開所有可能的組合
merge(x = file_1, y = file_2, by = NULL)
```
```
##   name.x day1 name.y day2
## 1      A   23      A   77
## 2      B   45      A   77
## 3      D  100      A   77
## 4      A   23      C   11
## 5      B   45      C   11
## 6      D  100      C   11
## 7      A   23      D   35
## 8      B   45      D   35
## 9      D  100      D   35
```
FYI
ps. reference: http://stackoverflow.com/questions/1299871/how-to-join-data-frames-in-r-inner-outer-left-right
※ 引述《iterate (碎形)》之銘言:
:
: ctrl + y 可以刪除一整行,請將不需要的內容刪除
: 文章分類提示:
: - 問題: 多個檔案合併時,取聯集。範例如下。
:
: [問題類型]:
:
: 程式諮詢(我想用R 做某件事情,但是我不知道要怎麼用R 寫出來)
:
: [軟體熟悉度]:
: 請把以下不需要的部份刪除
: 入門(寫過其他程式,只是對語法不熟悉)
: [問題敘述]:
: 請簡略描述你所要做的事情,或是這個程式的目的
: file_1:
:    day1
: A   23
: B   45
: D  100
: file_2:
:    day2
: A   77
: C   11
: D   35
: file_3:
:    day3
: B   11
: D   44
: E   55
: 希望能合併成下表:
:     day1    day2    day3
: A    23      77       0
: B    45       0      11
: C     0      11       0
: D   100      35      44
: E     0       0      55
: [程式範例]: 無
:
: 張貼能夠重現錯誤的程式碼,可以幫助版友更快的幫你解決問題
:
: [關鍵字]: 謝謝各位的幫忙。
:
: 選擇性,也許未來有用
:
--
歡迎到ptt R_Language版分享R 的相關知識
歡迎加入 Taiwan R User Group : http://www.facebook.com/Tw.R.User
聚會報名 http://www.meetup.com/Taiwan-R/
聚會影片 https://www.youtube.com/user/TWuseRGroup
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 46.115.27.241
※ 文章網址: http://www.ptt.cc/bbs/R_Language/M.1405029045.A.390.html
推
07/12 00:49, , 1F
07/12 00:49, 1F
→
07/12 03:53, , 2F
07/12 03:53, 2F
→
07/12 03:53, , 3F
07/12 03:53, 3F
推
07/13 14:19, , 4F
07/13 14:19, 4F
推
08/02 22:00, , 5F
08/02 22:00, 5F
推
07/09 15:04, , 6F
07/09 15:04, 6F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 4 之 6 篇):
R_Language 近期熱門文章
PTT數位生活區 即時熱門文章