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