在选择要加入的列时加入多个 data.frame
Join multiple data.frame while selecting the columns to join
我有 10 个具有相同 data.frame 结构 [75 x 1259] 的 csv 文件。它们是使用列表在 R 中导入的。我想在每个 csv 文件中使用相同的列并创建一个新的 data.frame [75 X 11],所以最后我有 1259 个 75 X 11 的数据帧(11 列,因为第一列是相同的在每个 data.frame 中,因此它可以用于“by=”参数。
我曾经有一个代码可以为 3 data.frame 执行此操作,但不是很复杂。
Tab<-function(k){
left_join(select(Ini1, c("value",k)), select(Aug2, c("value",k)), by="value") %>%
left_join(., select(Dim2, c("value",k)), by="value") }
for (k in 2:1258) {
write.csv(data.frame(Tab(k)), paste0('/Users/Tableau des features/',k,'.csv'), row.names = T)
如果我不需要再做 7 个烟斗,我会很高兴。我阅读此 Simultaneously merge multiple data.frames in a list 是为了帮助我理解合并多个 data.frame。下面的代码听起来不错。
csv.list %>% reduce(left_join, by="value")
唯一的问题是我如何 select 我想要合并的列。
如果 csv.list
是数据框列表,并且列 value
存在于所有数据框中,那么您可以使用 Reduce
函数,如下所示:
library(tidyverse)
## select same column from every dataframe
new_csv_list <- lapply(csv.list, function(x) x %>% select(value, Image))
## Merge all the dataframe using the updated list
df <- Reduce(function(x,y) merge(x, y, by = 'value', all.x = TRUE), new_csv_list)
我有 10 个具有相同 data.frame 结构 [75 x 1259] 的 csv 文件。它们是使用列表在 R 中导入的。我想在每个 csv 文件中使用相同的列并创建一个新的 data.frame [75 X 11],所以最后我有 1259 个 75 X 11 的数据帧(11 列,因为第一列是相同的在每个 data.frame 中,因此它可以用于“by=”参数。
我曾经有一个代码可以为 3 data.frame 执行此操作,但不是很复杂。
Tab<-function(k){
left_join(select(Ini1, c("value",k)), select(Aug2, c("value",k)), by="value") %>%
left_join(., select(Dim2, c("value",k)), by="value") }
for (k in 2:1258) {
write.csv(data.frame(Tab(k)), paste0('/Users/Tableau des features/',k,'.csv'), row.names = T)
如果我不需要再做 7 个烟斗,我会很高兴。我阅读此 Simultaneously merge multiple data.frames in a list 是为了帮助我理解合并多个 data.frame。下面的代码听起来不错。
csv.list %>% reduce(left_join, by="value")
唯一的问题是我如何 select 我想要合并的列。
如果 csv.list
是数据框列表,并且列 value
存在于所有数据框中,那么您可以使用 Reduce
函数,如下所示:
library(tidyverse)
## select same column from every dataframe
new_csv_list <- lapply(csv.list, function(x) x %>% select(value, Image))
## Merge all the dataframe using the updated list
df <- Reduce(function(x,y) merge(x, y, by = 'value', all.x = TRUE), new_csv_list)