【发布时间】:2021-08-02 16:46:42
【问题描述】:
我有几个单独的数据框,我想将它们分开,因为将它们合并在一起会创建一个非常大的元素。
但是,我现在想将另一个数据框中的变量与所有变量合并。
这是我想做的一个例子:
df1 <- data.frame(ID1 = c(1:10), Var1 = rep(c(1,0),5))
df2 <- data.frame(ID1 = c(1:10), Var2 = c(21:30))
dfs <- Filter(function(x) is(x, "data.frame"), mget(ls()))
mergewith <- data.frame(ID1 = c(1:10), ID2 = c(41:50))
我的目标是 df1 和 df2 看起来像这样:
df1
ID1 Var1 ID2
1 1 1 41
2 2 0 42
3 3 1 43
4 4 0 44
5 5 1 45
6 6 0 46
7 7 1 47
8 8 0 48
9 9 1 49
10 10 0 50
df2
ID1 Var2 ID2
1 1 21 41
2 2 22 42
3 3 23 43
4 4 24 44
5 5 25 45
6 6 26 46
7 7 27 47
8 8 28 48
9 9 29 49
10 10 30 50
到目前为止我尝试过的是:
dat = lapply(dfs,function(x){
merge(names(x), mergewith, by = "ID1");x})
list2env(dat,.GlobalEnv)
但是,我收到以下消息: "'by' 必须指定唯一有效的列"
是否可以在不使用循环的情况下做到这一点?
【问题讨论】:
标签: r list dataframe merge lapply