首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >合并R中的csv文件

合并R中的csv文件
EN

Stack Overflow用户
提问于 2014-08-21 10:00:12
回答 1查看 571关注 0票数 1

我有3个.csv文件,我需要在R中分析。文件一个包含用户id和信号更新的列。文件二包含用户id、购买日期和购买金额的列。文件三包含具有用户id、消息日期和消息数量的列。

请注意,在这三个文件中,用户id的顺序并不相同,因此cop。

我希望有一些帮助合并这些文件,使大型数据集有订单用户id,信号更新,购买日期,购买金额,消息日期和消息数量。似乎找不到在R中执行此操作的代码,谢谢

EN

回答 1

Stack Overflow用户

发布于 2014-08-21 10:35:21

虽然merge没有接受三个参数,但Reduce是为迭代列表和将对传递给函数的任务而设计的。下面是一个三向合并的示例:

代码语言:javascript
复制
d1 <- data.frame(id=letters[1:3], x=2:4)
d2 <- data.frame(id=letters[3:1], y=5:7)
d3 <- data.frame(id=c('b', 'c', 'a'), z=c(5,6,8))
Reduce(merge, list(d1, d2, d3))
##   id x y z
## 1  a 2 7 8
## 2  b 3 6 5
## 3  c 4 5 6

请注意,列id的顺序不同,但值是matched的。

如果您有不匹配的数据,并且希望保留所有可能的行,则需要一个外部连接,方法是向merge提供all=TRUE。由于Reduce无法将其他参数传递给函数,因此必须创建一个新函数来调用merge

代码语言:javascript
复制
d1 <- data.frame(id=letters[1:3], x=2:4)
d2 <- data.frame(id=letters[3:1], y=5:7)
d3 <- data.frame(id=c('b', 'c', 'd'), z=c(5,6,8))
Reduce(function(x,y) merge(x,y,all=TRUE), list(d1, d2, d3))
##   id  x  y  z
## 1  a  2  7 NA
## 2  b  3  6  5
## 3  c  4  5  6
## 4  d NA NA  8

NA用于指示不匹配行中的数据。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25417177

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档