【问题标题】:How to export multiple csv file in r?如何在r中导出多个csv文件?
【发布时间】:2017-10-24 06:54:21
【问题描述】:

8 个 csv 文件中的每一个都有 219 列。我想导出 219 个 csv 文件,它结合了每 8 个文件中的每一列。

如何将多个 csv 文件导出为不同的名称? 这是我导入 csv 文件的代码。

df1<-read.csv("RSI9D.csv", header=TRUE)
df2<-read.csv("RSI30D.csv", header=TRUE)
df3<-read.csv("MKT_CAP.csv", header=TRUE)
df4<-read.csv("VOLUME.csv", header=TRUE)
df5<-read.csv("INST_HOLD.csv", header=TRUE)
df6<-read.csv("MOVAVG30.csv", header=TRUE)
df7<-read.csv("MOVAVG10.csv", header=TRUE)
df8<-read.csv("MOVAVG5.csv", header=TRUE)

正如我上面所说,我想导出一个文件,该文件将每个文件中的每一列组合在一起。由于有219列,一共会生成219个文件。

【问题讨论】:

  • 按顺序命名的变量很糟糕。你应该看看how to make a list of data frames
  • 如果你想合并从 df1 到 df8 的所有文件: all
  • 我不明白你说的 219 个 csv 文件是什么意思。您的意思是:从 file1、file2、file3、... file8 中获取 col1 -> 制作 csv 文件。从 file1、file2、file3、...file8 中取 col2 -> 制作 csv 文件?
  • @Adamm 在我的 8 个 csv 文件中,有 219 列。我想组合 df1 的第一列 + df2 的第一列 +...+ df8 的第一列
  • @user3293236 是的!正确的!怎么做??我想我必须使用 for() 函数和 cbind 等...

标签: r csv export-to-csv


【解决方案1】:

您可以尝试使用 SQL Server,将每个文件导入到表中,然后使用 UNION 之类的命令将它们合并,然后简单地取出并导出。(假设所有表头/csv 文件都具有您期望的相同值)

【讨论】:

    【解决方案2】:
    dat <- do.call(rbind, lapply(1:8, function(x)get(paste0("df", x))))
    
    for(i in 1:ncol(dat)) write.csv(dat[,i], paste0("file_",i, ".csv"), row.names=F)
    

    更新:

    df_list <- lapply(1:8, function(x) get(paste0("df", x)))
    
    bindFn <- function(i, df_list){
      sapply(df_list, '[[', i)
    }
    
    for(i in names(df1)) write.csv(bindFn(i, df_list), paste0("file_",i, ".csv"), row.names=F)
    

    【讨论】:

    • 谢谢!但是我有问题!所有观察结果都记录在一列中。我想从每个文件中获取 8 列。例如,如果创建 219 个文件,每个文件有 8 列
    • 谢谢!非常好的代码!!如果您不介意,我可以再问一个吗?根据您的代码,我将执行主成分分析并尝试将每个文件的两个结果导出为 csv 文件,如下所示。>df1.pcabbbwrite.csv(bb,"df1_importance.csv") >awrite.csv(a,"df1_rotation.csv" )我应该如何一次输入代码?
    • 绑定列时,如何删除有NA的行?
    • na.exclude 和/或na.omit 将删除包含缺失值的行。请注意,这仅在您有大量观察值和少量缺失值时才实用。
    • 虽然不太明白你在pca 上的问题。建议将其作为一个单独的问题发布。
    【解决方案3】:

    如果每个 csv 具有相同的列名,您可以使用“rbind”将 8 个 csv 一起构建,然后将每个列导出为单个 csv 文件。

    inputfiles = c("RSI9D.csv","RSI30D.csv","MKT_CAP.csv","VOLUME.csv","INST_HOLD.csv","MOVAVG30.csv","MOVAVG10.csv","MOVAVG5.csv")
    new_data=data.frame()
    
    
    for(inputfile in inputfiles){
      data = read.csv(inputfile,header = FALSE)
      new_data<-rbind(new_data,data)
    }
    
    df8<-read.csv("MOVAVG5.csv", header=TRUE)
    colnames(new_data) = colnames(df8)
    attach(new_data)
    
    for(i in 1:length(new_data)){
      outputfile = paste(colnames(new_data)[i],".csv",sep = "")
      print(paste(outputfile," is exporting ----"))
      write.csv(new_data[,i],outputfile)
    }
    

    【讨论】:

      猜你喜欢
      • 2018-11-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-12
      • 2014-01-07
      • 2018-05-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多