使用 for 循环根据一列中的唯一值合并两个数据框
Merge two dataframes based upon unique values in one column using a for loop
我有两个数据框,它们都包含一个名为“new_id”的列
在两个数据帧
中,“new_id”的每个唯一值都有 100 行,有时甚至是 1000 行
我想合并基于此列的两个数据框,但如果我采用蛮力方法使用:
df3 <- merge(df1, df2, by = "new_id")
我运行内存问题。
我创建了一个仅包含一个 new_id 值的 df2 子集,并将其与 df1 成功合并。所以,我想我想出了一个使用 for 循环的解决方案。但是,我不确定如何构建它,因为我是 R 的初学者。
我认为循环应该做的是首先为 new_id 的每个唯一值设置子集 df2,然后将该子集数据帧与 df1 合并,将结果存储在列表中。在循环的每次迭代中,列表将为每个 new_id 添加每个新数据帧。最后,我会将列表绑定到它自己的“主”数据框中。
我不知道这是否正确,但我想出了这个循环作为基本结构和潜在的起点:
datalist = list()
for(i in unique(Procs_OP$new_id)){
df <- subset(Procs_OP, new_id %in% Procs_OP$new_id))
df2 <- merge(step2, df, by="new_id", all.step2=TRUE)
datalist[[i]] <- df2
}
df3 = do.call(rbind, datalist)
subset
应该在 i
上,因为这里的 i
是 unique
元素循环
un1 <- unique(Procs_OP$new_id)
datalist <- vector('list', length(un1))
names(datalist) <-
for(i in un1){
df <- subset(Procs_OP, new_id %in% i))
df2 <- merge(step2, df, by="new_id", all.step2=TRUE)
datalist[[i]] <- df2
}
我有两个数据框,它们都包含一个名为“new_id”的列 在两个数据帧
中,“new_id”的每个唯一值都有 100 行,有时甚至是 1000 行我想合并基于此列的两个数据框,但如果我采用蛮力方法使用:
df3 <- merge(df1, df2, by = "new_id")
我运行内存问题。
我创建了一个仅包含一个 new_id 值的 df2 子集,并将其与 df1 成功合并。所以,我想我想出了一个使用 for 循环的解决方案。但是,我不确定如何构建它,因为我是 R 的初学者。
我认为循环应该做的是首先为 new_id 的每个唯一值设置子集 df2,然后将该子集数据帧与 df1 合并,将结果存储在列表中。在循环的每次迭代中,列表将为每个 new_id 添加每个新数据帧。最后,我会将列表绑定到它自己的“主”数据框中。
我不知道这是否正确,但我想出了这个循环作为基本结构和潜在的起点:
datalist = list()
for(i in unique(Procs_OP$new_id)){
df <- subset(Procs_OP, new_id %in% Procs_OP$new_id))
df2 <- merge(step2, df, by="new_id", all.step2=TRUE)
datalist[[i]] <- df2
}
df3 = do.call(rbind, datalist)
subset
应该在 i
上,因为这里的 i
是 unique
元素循环
un1 <- unique(Procs_OP$new_id)
datalist <- vector('list', length(un1))
names(datalist) <-
for(i in un1){
df <- subset(Procs_OP, new_id %in% i))
df2 <- merge(step2, df, by="new_id", all.step2=TRUE)
datalist[[i]] <- df2
}