Образцы данных выглядят так (кстати, у меня есть сотни таких файлов). Сложная часть - это "NO RECORD" в файле. Я не пытался часы, чтобы получить его в R без каких-либо успехов
BEGIN DATA
RIM
DATE AF QD QU
09/30/1920 NO RECORD 370.00 NO RECORD
10/01/1920 NO RECORD 391.00 391.00
10/02/1920 NO RECORD 496.00 MISSING
10/03/1920 NO RECORD 660.00 MISSING
10/04/1920 NO RECORD 881.00 MISSING
10/05/1920 NO RECORD 660.00 MISSING
10/06/1920 NO RECORD 515.00 -9999
10/07/1920 NO RECORD 443.00 NO RECORD
10/08/1920 NO RECORD 443.00 MISSING
10/09/1920 NO RECORD 443.00 443.00
10/10/1920 NO RECORD 443.00 MISSING
Это мой последний код R
library(zoo)
# function to read data
obsRead <- function(path2file, filename, number_line_skip, header_or_not) {
tmpName <- paste(path2file, filename, sep="")
tmpData <- read.zoo(tmpName,
tz='', stringsAsFactors = FALSE, strip.white = TRUE,
header=header_or_not, skip=number_line_skip,
na.strings = c("NA", "N/A", "MISSING", "NO RECORD", "-9999"), # tell zoo what NA values look like
qName <- c("AF", "QD", "QU")
names(tmpData) <- qName
index(tmpData) <- as.Date(index(tmpData)) # Convert index from POSIXct to Date
str(tmpData)
return(tmpData)
}
dataDir = "path/to/file/"
dataFile <- "sampleData.txt"
nLineSkip <- 3
header_or_not <- FALSE
Q_obs <- obsRead(dataDir, dataFile, nLineSkip, header_or_not)
И ошибка, которую я получил от R
Error in scan(file, what, nmax, sep, dec, quote, skip, nlines, na.strings, :
line 2 did not have 6 elements
Любое предложение будет оценено! Спасибо!
sed
. Или вы можете использоватьreadLines()
в R, выполнить преобразование, а затем отправить вread.table
. Но я не могу поверить, что в файле данных нет никакой логики. - person MrFlick   schedule 14.08.2014read.fwf
может помочь читать файлы фиксированной ширины. - person MrFlick   schedule 14.08.2014