如何使用R将.csv按列拆分为多个.csv?

时间:2018-03-13 14:11:08

标签: python r csv

我有一个包含超过3000列的巨大.CSV文件,需要将这些列加载到数据库中,因为表限制为1024列,我想将这些.CSV文件拆分为1024个或更少列的多个文件。

到目前为止,我在之前有关此主题的问题的帮助下尝试过 -

Python -

 import csv 
 import file
 input import os 
 source = 'H:\\Programs\\Exploratory Items\\Outdated\\2018\\csvs\\' for root, dirs, filenames in os.walk(source): 
for f in filenames: 
fullpath = os.path.join(source, f) 
output_specifications = ( (fullpath[:-4] + 'pt1.csv', slice(1000)
(fullpath[:-4] + 'pt2.csv', slice(1000, 2000)), 
(fullpath[:-4] + 'pt3.csv', slice(2000, 3000)), 
(fullpath[:-4] + 'pt4.csv', slice(3000, 4000)), 
(fullpath[:-4] + 'pt5.csv', slice(4000, 5000)), ) 
output_row_writers = [ 
( 
  csv.writer(open(file_name, 'wb'), 
  quoting=csv.QUOTE_MINIMAL).writerow, selector,
  ) for file_name, selector in output_specifications ] 

 reader = csv.reader(fileinput.input()) 
 for row in reader: 
 for row_writer, selector in output_row_writers: row_writer(row[selector])

上面的python代码的问题是分割和写入这些文件需要永远,因为按行写入是我的理解。不适合我的情况,因为我有超过200个.CSV文件,每个文件有1000多行。

现在尝试 -

-cut命令(POSIX)但是我使用Windows所以会在Ubuntu平台上试试这个。

想在R中尝试:

我有一个代码可以将我的所有SPSS转换为有效工作的.csv,因此我想在此阶段为此添加更多内容,以便它可以将我的文件按列拆分为多个.csvs。

setwd("H:\\Programs\\2018")
getwd()
list.files()

files <- list.files(path = '.', pattern = '.sav')

library(foreign)
for (f in files) { #iterate over them
data <- read.spss(f, to.data.frame = TRUE, use.value.labels = FALSE )
write.csv (data, paste0(strsplit(f, split = '.', fixed = T)[[1]][1], '.csv'))
}  

谢谢

参考资料 - Python code ref

0 个答案:

没有答案