2016-09-14 27 views
1

我有一個包含956,678行的CSV文件中的數據。下面的代碼塊讀取文件和組將數據分割(有65,000行和其餘行去最後一組每個組)R.現在使用R分割CSV文件中的數據並寫入切片中的文件使用R

my_file <- read.csv("~myfile_path/file.csv") 
grps <- (split(my_file, (seq(nrow(my_file))-1) %/% 65000)) 
for (i in grps) 
{ 
write.csv(grps, paste("path/output_file", i, ".csv", sep="")) 
} 

,我還想寫這些團體爲CSV文件到磁盤。任何人都可以建議我如何做到這一點?

EDIT1:

基礎上的評論,我已經修改了代碼,並得到以下錯誤:

Error in data.frame(`0` = list(nih_addr_id = c(664L, 665L, 666L, 667L, : 
arguments imply differing number of rows: 65000, 46677 
+1

'my_file'已經是一個data.frame。您不需要以下聲明。 –

+0

'split(df,sample(1:round(nrow(df)/ 65000),65000))''然後在'split'生成的列表中的每個塊上使用'for-loop'來寫'操作。 – Abdou

+0

@Abdou:感謝您的反饋。使用您建議的拆分方法。我得到了以下錯誤:「sample.int(長度(x),大小,替換,概率)中的錯誤: 不能比'replace = FALSE'時大於總體的樣本」 –

回答

1

write.csv在循環試圖寫入列表爲.csv文件,而不是列表的數據框元素。

嘗試:

my_file <- read.csv("~myfile_path/file.csv") 
grps <- (split(my_file, (seq(nrow(my_file))-1) %/% 65000)) 
for (i in seq_along(grps)) { 
    write.csv(grps[[i]], paste0("path/output_file", i, ".csv")) 
} 
相關問題