читать.таблица с" выровненными по правому краю " данными
У меня есть текстовый файл для чтения в R,но файл, кажется, не разделен табуляцией. Единственная структура файла состоит в том, что столбцы всегда заканчиваются в какой-то точке (т. е. столбцы выровнены по правому краю).
Итак, во-первых, есть ли название для этого типа структуры данных? Тогда, как можно прочитать его в R? 2.37 2.03 2.38
5,397 5,082 5,609
13.0 21.6 15.2 15.2
128.0 103.1 134.2 133.4
Просто используя чтение.table () не работает, пропущенное значение не будет помещено в нужное место...
# download data:
tmp <- tempfile()
f <- download.file("http://usda.mannlib.cornell.edu/usda/waob/wasde//1990s/1995/wasde-01-12-1995.txt", tmp)
D <- file(tmp)
data_enc <- readLines(D, warn=FALSE)
close(D)
dat <- sapply(strsplit(data_enc[232:236], ":"), function(x) x[2])
writeLines(dat, tmp)
## try to read data:
read.table(tmp, fill = TRUE, sep ="", header=FALSE)
Дает:
V1 V2 V3 V4
1 2.37 2.03 2.38 NA
2 5,397 5,082 5,609 NA
3 13.0 21.6 15.2 15.2
1 ответ:
Может быть, попробуйте использовать
read.fwf
для чтения таблицы форматированных данных фиксированной ширины:widths <- gregexpr("\\.\\d", readLines(tmp)[5])[[1]]+1L # line 5 looks complete widths <- c(widths[1], diff(widths)) # posis after the decimal points as widths read.fwf(tmp, widths = widths) # V1 V2 V3 V4 # 1 2.37 2.03 NA 2.38 # 2 5,397 5,082 NA 5,609 # 3 13.0 21.6 15.2 15.2 # 4 128.0 103.1 134.2 133.4 # 5 146.4 130.9 156.5 155.7