R:通过两个数据帧中前三行的组合进行合并

时间:2012-02-16 11:14:18

标签: r merge

我有两个看起来像这样的数据框:

==fileA    
LmjF.01 257506  257508  1
LmjF.01 257508  257509  2
LmjF.01 257509  257510  3
LmjF.01 257510  257511  4
LmjF.01 257511  257514  5
[...]

==fileB    
LmjF.01 291121  291123  123
LmjF.01 291123  291125  122
LmjF.01 291125  291126  123
LmjF.01 291126  291128  122
LmjF.01 291128  291129  121
[...]

我想将它们合并到一个数据帧中,以便第一列,第二列和第三列在两个集合中匹配,第二列和第三列是具有相关分数的不同大小的窗口的起始和结束位置在第四栏。第四行是我希望为每一行添加的一行:

==fileM
LmjF.01 291121  291123  123  12
LmjF.01 291123  291125  122  43
LmjF.01 291125  291126  123  434
LmjF.01 291126  291128  122  342
LmjF.01 291128  291129  121  43
[...]

任何想法如何对两个集合进行此窗口合并?

2 个答案:

答案 0 :(得分:2)

以下是一些可重现的数据:

common <- data.frame(
    id    = 1:27,
    start = seq(as.POSIXct("2012-02-01"), as.POSIXct("2012-02-27"), "days"),
    end   = seq(as.POSIXct("2012-02-03"), as.POSIXct("2012-02-29"), "days")
)
a <- common[sample(27, 15), ]
a$value <- runif(15)
b <- common[sample(27, 20), ]
b$value <- rnorm(20)

要合并数据框,只需调用merge,指定要匹配的列。

merge(a, b, c("id", "start", "end"))

答案 1 :(得分:2)

我不确定我是否正确理解了您的问题,但函数merge()似乎是您的朋友:

fileM <- merge(fileA, fileB, by.x=1:3, by.y=1:3)