【问题标题】:Split data in r and save all the split files in csv在r中拆分数据并将所有拆分文件保存在csv中
【发布时间】:2016-12-31 09:35:38
【问题描述】:

我有一个名为 data 的数据集

  Model Garage        City    
  Honda      C     Chicago       
 Maruti      B      Boston  
Porsche      A    New York    
  Honda      B     Chicago  
  Honda      C    New York  

这是 100000 行,我想按汽车、位置和城市拆分这些数据,并将拆分后的文件保存在不同的 csv 中。

split(Data, with(Data, interaction(Model,City,Garage)), drop = TRUE)

现在这段代码使它成为一个列表。如何为所有拆分类型取消列出并保存不同的 csv 文件

前本田将拥有三个拆分文件,分别为 Honda C ChicagoHonda B ChicagoHonda C New York

谢谢

【问题讨论】:

  • 到目前为止您尝试过什么?因为SO上已经有类似的问题了

标签: r csv split


【解决方案1】:
# create all combinations of data.frames possible based on unique values of Model, Garage, City
l = split(x, list(x$Model, x$Garage, x$City))

# create csv filrs only if data.frame had any rows in it
lapply(names(l), function(x) if(dim(l[[x]])[1] != 0){write.csv(l[[x]], paste0("path", x,".csv"))})

【讨论】:

    【解决方案2】:

    只是添加更多选项,你可以使用data.table

    library(data.table)
    x <- as.data.table(x)
    x[, write.table(.SD, paste("path/file_", Model, "_", Garage, "_", City, ".csv", sep = "")), by = c("Model", "Garage", "City")]
    

    【讨论】:

    • 好主意!!
    【解决方案3】:

    您可以轻松地使用循环。 100k左右的线应该不是问题。

    x <- read.table(text = "Model, Garage, City
                       Honda, C, Chicago
                       Maruti, B, Boston
                       Porsche, A, New York
                       Honda, B, Chicago
                       Honda, C, New York", sep = ",", header = TRUE)
    x   
    #   Model Garage      City
    #   Honda      C   Chicago
    #  Maruti      B    Boston
    # Porsche      A  New York
    #   Honda      B   Chicago
    #   Honda      C  New York
    
    library(dplyr) 
    

    您只需从您的data.frame 遍历模型、车库和城市的所有独特组合,filter 并将临时的data.frame 导出到 csv 表。

    uni <- unique(x[,c("Model", "Garage", "City")])
    
    for (j in 1:nrow(uni)) {
      i <- uni[j,]
      tmp <- x %>% filter(Model == i$Model, Garage == i$Garage, City == i$City)
    
      write.table(tmp, paste(i$Model, "_", i$City, "_", i$Garage, ".csv"))
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-29
      • 2018-09-25
      • 1970-01-01
      • 2020-09-04
      • 1970-01-01
      相关资源
      最近更新 更多