Как импортировать данные с разрывами строк из текстового файла в R? - PullRequest
2 голосов
/ 11 января 2010

У меня есть текстовый файл, который я хотел бы импортировать в R. Проблема в том, что файл выглядит так:

x1,x2,x3,x4,x5,x6,x7,x8,x9,10,x11
   1953.00       7.40000       159565.       16.6680       8883.00    
   47.2000       26.7000       16.8000       37.7000       29.7000    
   19.4000    
   1954.00       7.80000       162391.       17.0290       8685.00    
   46.5000       22.7000       18.0000       36.8000       29.7000    
   20.0000

и т. Д.

Я пытался > data <- read.table("clipboard", header=TRUE), но это не сработало.

Ответы [ 3 ]

3 голосов
/ 16 апреля 2014

Пока данные не сформированы, их все равно можно проанализировать с учетом следующих предположений:

  • Заголовок определяет, сколько существует переменных (столбцы в результирующей таблице)
  • Сами данные полны - например, нет пропущенных значений
  • Данные относятся к единому типу (например, numeric())

Ниже приведен код, который анализирует предоставленные примеры данных, как если бы они были считаны из текстового файла с именем data.txt:

# read in the header and split on ","
header = strsplit(readLines('data.txt', n=1), ',')[[1]]

# the length of the header determines how many variables there are

# read in the data which appears to have the pattern
#   <numbers><whitespace><numbers>...
# skipping the first line since it was already parsed as the header
data = scan('data.txt', skip=1, what=numeric())

# reform the data (which is read in as a 1D numeric vector) into a 2D matrix
# with the same number of columns as there are headers (filling by rows).
# header names are assigned via the `dimnames=` argument
data = matrix(data, ncol=length(header), byrow=T, dimnames=list(NULL, header))

производит следующий вывод:

       x1  x2     x3     x4   x5   x6   x7   x8   x9  x10  x11
[1,] 1953 7.4 159565 16.668 8883 47.2 26.7 16.8 37.7 29.7 19.4
[2,] 1954 7.8 162391 17.029 8685 46.5 22.7 18.0 36.8 29.7 20.0
0 голосов
/ 11 января 2010

Используйте read.csv вместо read.table, а затем добавьте skip=1, header=FALSE к аргументам read.csv.

0 голосов
/ 11 января 2010

Может быть, вы могли бы вручную отредактировать первую строку (изменить на "" и вставить разрыв строки), а затем повторить попытку?

...