我希望合并多个数据框,一个叫A,另一个叫Comments_[[i]],i的范围是1到36。公共列的名字叫“Item.i .Q3",同样 i 的范围是 1 到 36。
没有循环 l 我将执行以下 36 次(将 i 更改为 1 到 36 之间的数字):
outcome <- merge(A , Comments_[[i]], by="Item.i.Q3", all= TRUE)
想知道我是否可以建立一个循环,这样我就不必做 36 次了?谢谢:)
答案 0 :(得分:0)
构造名称的字符向量 df_names
,并定义所需的 merge
函数 Merge
。然后使用 mget
获取数据名本身并使用 Reduce
对它们进行迭代 Merge
。我们假设要合并的公共列是 A 中的列号 i,并且在所有其他数据框中都是 1。
# test data
i <- 1 # position of column in A to merge on; assume 1 for others
A <- Comments_1 <- Comments_2 <- BOD
df_names <- ls(pattern = "^Comments_")
Merge <- function(x, y) merge(x, y, by = 1, all = TRUE)
Reduce(Merge, mget(df_names), cbind(A[i], A[-i]))
给予:
Time demand.x demand.y demand
1 1 8.3 8.3 8.3
2 2 10.3 10.3 10.3
3 3 19.0 19.0 19.0
4 4 16.0 16.0 16.0
5 5 15.6 15.6 15.6
6 7 19.8 19.8 19.8