在一個文件夾中,我喜歡24 * .csv文件,它們具有相同的結構,我想創建一個文件。問題是並不是所有的數據框都以相同的方式讀取,因爲對於某些文件來說,sep參數是「,」和其他「;」。 我應該使用什麼方法?我想我可能會放一個if語句。在r中讀取倍數不變的文本文件沒有相同的分隔符
回答
您可以檢查數據幀的第一行,看它是否有逗號或者分號作爲分隔符,和呼叫後ifelse聲明:
L <- readLines('DataFrame', n = 1)
if (grepl(";", L)) read.csv2("DataFrame") else read.csv("DataFrame")
下面的簡單代碼所做的工作,而且速度非常快。
library(dplyr)
library(data.table)
files <- list.files(path = "Ariel/Trips/", full.names = T)
f <- list()
for (i in 1:length(files)) {
f[[i]] <- fread(files[i], header = T, colClasses = c("factor", "factor", "factor", "factor",
"factor", "factor", "factor", "factor",
"factor", "factor", "factor", "factor",
"factor", "integer", "integer", "integer",
"factor", "numeric", "numeric", "integer",
"factor", "factor", "factor", "factor",
"factor", "factor", "factor", "factor"))
}
trip <- bind_rows(f)
fwrite(x = trip, file = "trip.csv", quote = T, na = NA, row.names = F)
如果你打算用data.frames做更多的事情,而不僅僅是將它們重寫到一個新文件中,fread會默認創建一個data.table,其中的子集有所不同。如果這是一個問題,請使用其'data.table = FALSE'參數。如果你想使用更少的包,你也可以使用'data.table :: rbindlist'來代替'dplyr :: bind_rows'。此外,'lapply'可能會比'for'循環更快,因爲默認情況下,它預先分配內存好一點。 – alistaire
* ...其中有不同的子集.. *是相當含糊的..最近,這種行爲已被固定(大部分)..在那裏可以使用DT [,cols]表現得像一個DF(假設'cols'在DT中不存在)或'DT [,..cols]'查找'DT'範圍外的'cols'(它是列名/索引的char /整數向量)。參見[v1.10.0下的第2點和v1.9.8下的第1點](https://github.com/Rdatatable/data.table/blob/master/NEWS.md)。 – Arun
- 1. 如何讀取具有不同分隔符的R中的dat文件
- 2. R中的文本文件與不同分隔符
- 3. 在不同的擴展名和分隔符中讀取文件
- 4. PYTHON:在文本文件中讀取不適用於分隔符
- 5. 讀取以分號分隔的文本文件中的不同數據C
- 6. 從文本文件中讀取沒有明確分隔符的列
- 7. 將文本文件讀取到C++值中,並用不同的字符分隔
- 8. 讀分隔從文本文件數據到不同的RDDS
- 9. Fortran:讀取字符串中帶有不規則分隔項的文本文件
- 10. SAS - 導入日期分隔符和分隔符相同的文本文件
- 11. 在R - TAB分隔文件中讀取幾個文件
- 12. 閱讀R中的分隔文件
- 13. 批處理腳本讀取由分隔符分隔的文本
- 14. python具有不同分隔符的多個文本文件
- 15. 如何使用不同的行分隔符讀取大文件?
- 16. PHP如何分割文本中具有相同分隔符的文本?
- 17. 從逗號分隔的文本文件中讀取數組
- 18. Java的分隔符讀取文本文件
- 19. Qt讀取製表符分隔文本文件的特定列
- 20. 從Delphi的文本文件讀取行時使用分隔符
- 21. 努力根據分隔符分析不同的文本文件
- 22. 讀取帶有在其本身中指定的分隔符的csv文件
- 23. VBA讀取分隔文本
- 24. SSIS文件沒有分隔符,如何(有可能)使用文件源讀取?
- 25. 如何讀取C中製表符分隔整數的文本文件?
- 26. 如何在Mac上將製表符分隔的文本文件讀入R?
- 27. 帶有不同分隔符的R write.table
- 28. 如何讀取分隔R中的「::」的.dat文件
- 29. 在MATLAB中讀取科學記數法制表符分隔文本文件
- 30. 在R中讀取多個文件分配在不同的目錄中,但具有相同的名稱
'data.table :: fread'很方便,如果你覺得太懶惰,無法指定分隔符,並且數據格式合理。一般來說,這種方法是通過一個文件名向量''lapply'讀取函數,'do.call(rbind,...)'(或dplyr或data.table變體)結果。 – alistaire
@Ariel愚蠢的問題,但它是不可行的,只是做大規模發現/替換的';'分隔符,使所有的文件是一致的?如果這只是一次性的事情,那麼這可能是最簡單的方法。如果您不得不在持續的基礎上處理它,請考慮對文件進行編碼,以便您知道要使用的分隔符。 –
@MatthewCrews是一種可能性,但在這種情況下,數據中的十進制值是用「,」代替「。」。這可能是一個問題。 – Ariel