2013-04-26 2 views
1

я должен быть недопонимание, как read.csv работает в R. Я прочитал файл справки, но до сих пор не понимаю, как CSV-файл, содержащий:R правильное использование read.csv

40900,-,-,-,241.75,0 
40905,244,245.79,241.25,244,22114 
40906,244,246.79,243.6,245.5,18024 
40907,246,248.5,246,247,60859 

считаны в R с помощью: euk<-data.matrix(read.csv("path\to\csv.csv"))

производит это в результате (с использованием tail):

  Date Open High Low Close Volume 
[2713,] 15329 490 404 369 240.75 62763 
[2714,] 15330 495 409 378 242.50 127534 
[2715,] 15331 1 1 1 241.75  0 
[2716,] 15336 504 425 385 244.00 22114 
[2717,] 15337 504 432 396 245.50 18024 
[2718,] 15338 512 442 405 247.00 60859 

это должно быть что-то очевидно, что я не понимаю. Пожалуйста, будьте добры в своих ответах, я пытаюсь учиться.

Спасибо!

+0

Ваш вход имеет 6 столбцов, и в матрице также есть 6 столбцов (плюс столбец «index» (заключен в квадратные скобки) ... что, по-видимому, является проблемой? – Barranka

+0

Посмотрите на последнюю строку 40907 изменилось на 15338 , 246 изменен на 512 и т. Д. – mrkb80

ответ

8

Вопрос не с read.csv, но с data.matrix. read.csv импортирует любой столбец с символами в нем как фактор. «-» в первой строке для вашего набора данных - символ, поэтому столбец преобразуется в коэффициент. Теперь вы передаете результат read.csv в data.matrix, а в качестве состояний справки он заменяет уровни фактора внутренними кодами.

В принципе, вам необходимо убедиться, что столбцы ваших данных являются числовыми, прежде чем передавать данные. Frame в data.matrix.

Это должно работать в вашем случае (при условии, что только символы «-»):

euk <- data.matrix(read.csv("path/to/csv.csv", na.strings = "-", colClasses = 'numeric')) 
+0

, который объясняет 1, где - есть, но как насчет того, чтобы значение 246 было изменено на 512? – mrkb80

+0

@ mrkb80: Сравнить с результатом 'euk <- read.csv (" путь \ to \ csv.csv ")' – Aaron

+0

@ mrkb80 512 должен иметь внутренний код фактора для 256. – Seth

0

Я не эксперт R, но вы можете рассмотреть возможность использования scan() вместо этого, например:

> data = scan("foo.csv", what = list(x = numeric(), y = numeric()), sep = ",") 

Где foo.csv имеет две колонки, х и у, и через запятую. Надеюсь, это поможет.

0

Я взял вырезать/вставить свои данные, поместить его в файл, и я получаю это с помощью «R '

> c<-data.matrix(read.csv("c:/DOCUME~1/Philip/LOCALS~1/Temp/x.csv",header=F)) 
> c 
     V1 V2 V3 V4  V5 V6 
[1,] 40900 1 1 1 241.75  0 
[2,] 40905 2 2 2 244.00 22114 
[3,] 40906 2 3 3 245.50 18024 
[4,] 40907 3 4 4 247.00 60859 
> 

В вашем файле данных должно быть больше данных, например, для строки заголовка. И выход вы показываете, кажется, начинается с строкой 2713. Я хотел бы проверить:

The format of the header line, or get rid of it and add it manually later. 
That each row has exactly 6 values. 
The the filename uses forward slashes and has no embedded spaces 
(use the 8.3 representation as shown in my filename). 

Кроме того, если вы создали файл CSV из MS Excel, внутреннее представление на сегодняшний день является числом.

+0

Да, есть больше данных, которые я использовал только «хвост», чтобы вытащить последние несколько строк. Я отредактировал вопрос, чтобы это отразить. Благодаря! – mrkb80

Смежные вопросы