【发布时间】:2020-10-15 11:18:08
【问题描述】:
我有 3 个数据框正在尝试合并/加入。我试过这两种解决方案: Merge multiple data.frames in R with varying row length,Merge data.frames with duplicates。但是,输出数据表不是我想要的。
这是我的数据框的示例代码:
df1 <- data.frame(FzL = c(594.4014, 594.4147, 594.4148, 594.4194, 594.3877, 618.8600), task = c("hop", "hop", "hop", "vj", "vj", "vj"),
limb = c("L", "L", "L", "R", "R", "R"), trial = c("trial1", "trial1", "trial1", "trial2", "trial2", "trial2"))
df2 <- data.frame(FzR = c(594.2836, 619.1613, 618.8364, 594.4196, 694.3853, 640.2640), task = c("hop", "hop", "hop", "vj", "vj", "vj"),
limb = c("L", "L", "L", "R", "R", "R"), trial = c("trial1", "trial1", "trial1", "trial2", "trial2", "trial2"))
df3 <- data.frame(Frame = c(219388, 219389, 219390, 211387, 211388, 211389), Time = c("2020-06-05 13:26:39", "2020-06-05 13:26:39", "2020-06-05 13:26:39",
"2020-06-05 13:26:39", "2020-06-05 13:26:39", "2020-06-05 13:26:39"),
task = c("hop", "hop", "hop", "vj", "vj", "vj"), limb = c("L", "L", "L", "R", "R", "R"), trial = c("trial1", "trial1", "trial1", "trial2", "trial2", "trial2"))
尝试与此代码合并时:
JOIN <- merge(df3, merge(df1, df2, by = c("task", "limb", "trial"), all = TRUE), by = c("task", "limb", "trial"), all = TRUE)
run.seq <- function(x) as.numeric(ave(paste(x), x, FUN = seq_along))
L <- list(df1, df2, df3)
L2 <- lapply(L, function(x) cbind(x, run.seq = run.seq(x$limb)))
out <- Reduce(function(...) merge(..., all = TRUE), L2)
我的最终数据表应该有 7 列:任务、肢体、试验、FzL、FzR、帧、时间。
任何帮助将不胜感激!谢谢。
【问题讨论】:
-
从哪里获得
FzR列? -
@Ronak Shah 我错了,数据框 2 有 FzR
-
您需要
Reduce(merge, L)吗? -
当我尝试: out
-
为什么需要
L2?您正在寻找的预期输出是什么?
标签: r join merge duplicates