合并R中的csv文件

时间:2014-08-21 02:00:12

标签: r csv merge

我需要在R.中分析3个.csv文件。文件一包含具有用户ID和signupdate的列。文件二包含具有用户ID,购买日期和购买量的列。文件三包含具有用户ID,消息日期和消息数量的列。

请注意,三个文件中每个文件的用户ID顺序都不相同,因此警察。

非常乐意帮助合并这些文件,以便大型数据集具有订单用户ID,注册日期,购买日期,购买量,消息日期和消息数量。似乎无法在R中找到执行此操作的代码 提前致谢

1 个答案:

答案 0 :(得分:3)

虽然merge没有采用三个参数,但Reduce用于迭代列表并将对传递给函数的任务。这是一个三向合并的例子:

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的顺序不相同,但值为match

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

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用于表示不匹配行中的数据。

相关问题