我有两个看起来像这样的数据框:
==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
[...]
任何想法如何对两个集合进行此窗口合并?
答案 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)