我有一個flatfile,固定寬度既沒有換行也沒有換行(從AS400轉儲)。讀取沒有換行的固定寬度數據
如何將此文件加載到R data.frame?
我試過textConnection和read.fwf的不同組合,無濟於事。
下面的代碼崩潰Rstudio,所以我假設我超載系統。
len
以下是24376400,這是馴服,直到我通常使用read.table加載的文件。 記錄長度爲400.
是否有任何RECLEN參數需要設置,類似於SAS? 有沒有設置EOL =「\ n」或「\ r \ n」的選項?謝謝。
fname <- "AS400FILE.TXT"
len <- file.info(fname)$size
conn <- file(fname, 'r')
contents <- readChar(conn, len)
close(conn)
df <- read.fwf(textConnection(contents) , widths=layout$length , sep="")
> dput(layout)
structure(list(start = c(1L, 41L, 81L, 121L, 161L, 201L, 224L,
226L, 231L, 235L, 237L, 238L, 240L, 280L, 290L, 300L, 305L, 308L,
309L, 330L, 335L, 337L, 349L, 350L, 351L, 355L, 365L), end = c(40L,
80L, 120L, 160L, 200L, 223L, 225L, 230L, 234L, 236L, 237L, 239L,
279L, 289L, 299L, 304L, 307L, 308L, 329L, 334L, 336L, 348L, 349L,
350L, 354L, 364L, 400L), length = c(40L, 40L, 40L, 40L, 40L,
23L, 2L, 5L, 4L, 2L, 1L, 2L, 40L, 10L, 10L, 5L, 3L, 1L, 21L,
5L, 2L, 12L, 1L, 1L, 4L, 10L, 36L), label = c("TITLE", "SUFFIX",
"ADDRESS1", "ADDRESS2", "ADDRESS3", "CITY", "STATE",
"ZIP", "ZIP+4", "DELIVERY", "CHECKD", "FILLER", "NAME",
"SOURCECODE", "ID", "FILLER", "BATCH", "FILLER", "FILLER",
"GRID", "LOT", "FILLER", "CONTROL",
"ZIPIND", "TROUTE", "SOURCEA", "FILLER")), .Names = c("start",
"end", "length", "label"), class = "data.frame", row.names = c(NA,
-27L))
> dim(layout)
[1] 27 4
>
你可以給你的文本文件的一小段嗎?我注意到你有'sep =「」' - 所以它是(例如)原始數據'08091011',寬度2 - >'08','09','10','11'?什麼是'layout $ length'?矢量?整數? – 2012-02-27 03:00:20
佈局是具有字段名稱和字段寬度的數據幀: – 2012-02-27 03:02:42
該文本文件是具有路由信息的名稱和地址數據:共有27個字段。佈局變量是包含字段$ length的數據框。 – 2012-02-27 03:09:05