【问题标题】:Merge data frames by looping and then return通过循环合并数据帧然后返回
【发布时间】:2017-10-11 15:23:06
【问题描述】:

我正在尝试通过循环合并数据帧,然后将合并的文件返回到 R 内存,但无法让最后一部分工作。

这是我的 merge_data 函数:

list<-c("df1", "df2")
df1 <- diamonds[1:20,] 
df2 <- diamonds[21:40,]
data2<-diamonds[41:60,]

merge_data <- function(data){
  temp<-merge(data, data2, by.x = "cut", by.y="cut", all.x = T)
  temp[is.na(temp)] <-"none"
  print(temp)
}

以及应该返回合并数据帧的问题部分

for(i in list){
  temp<-(merge_data(get(i)))
  return(list[i], temp)
}

【问题讨论】:

  • 您需要指定要合并的有效列名。您的数据中不存在“name1”和“name2”。如果您的数据框都具有相同的列名,我不确定合并是否正确。也许你想要rbind 代替???
  • 这只是一个例子,是的,我需要合并我的原始数据集
  • 数据,数据2; data2 在这个函数中是固定的
  • 我的问题在第二部分,第一部分很好,我不知道如何返回合并数据
  • 您是要在最后将合并的数据帧保存到list(),还是让每个数据帧成为内存中的单独对象?

标签: r loops merge


【解决方案1】:

试试:

for(i in list){
  assign(paste0(i, "_merge"), merge_data(get(i)))
}

合并后可能需要处理这些因素,以免生成NAs

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-26
    • 2022-11-25
    • 2022-12-15
    • 2020-04-03
    • 2020-07-22
    • 1970-01-01
    • 2021-04-22
    • 2016-08-27
    相关资源
    最近更新 更多