Re: [問題] 多個檔案合併 取聯集

作者: wanson (望生)   2014-09-23 21:41:43
請問一下,從這個例子中,可以看到R 把兩個DATA SET
視為X Y
如果我要的是x - y的那個部份的話
從這個CODE 中的後面
all.x = TRUE
這個部份要怎樣改寫呢?
謝謝
※ 引述《Wush978 (拒看低質媒體)》之銘言:
: 一般來說,合併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
: : [程式範例]: 無
: : 張貼能夠重現錯誤的程式碼,可以幫助版友更快的幫你解決問題
: : [關鍵字]: 謝謝各位的幫忙。
: : 選擇性,也許未來有用

Links booklink

Contact Us: admin [ a t ] ucptt.com