Проблемы с чтением набора данных в R - PullRequest
1 голос
/ 02 декабря 2011

Я новичок в R и пытаюсь прочитать набор данных. Набор данных здесь:

http://petitlien.fr/myfiles

(Приведенная выше ссылка развернется до ссылки на папку для хранения файлов GMX и щелкнет на Гостевой доступ, чтобы получить файл.)

Файл с именем mydata.log содержит 32 записи без заголовка и состоит из 2 столбцов, разделенных пробелами.

Я пробую мощную команду scan

test.frame<-scan(file="mydata.log",sep= "", nlines=32,blank.lines.skip=TRUE)

Выше просто прочитайте первые 3 строки:

head(test.frame)
[1]   0.0000   0.0000 144.3210   0.3400 159.4070   0.8925

Я пробовал также read.table:

test.frame<-read.table(file="mydata.log",sep= "", nrows=32,blank.lines.skip=TRUE)

Эта строка читает только первые 6 строк, как показано ниже:

names(test.frame)
[1] "V1" "V2"
> head(test.frame)
   V1     V2
1   0.000 0.0000
2 144.321 0.3400
3 159.407 0.8925
4 198.413 0.9450
5 222.557 0.9975
6 235.464 1.0500

Кто-нибудь знает, как правильно прочитать этот набор данных?

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

Большое спасибо ...

Ответы [ 2 ]

2 голосов
/ 02 декабря 2011

Эта строка вашего кода работает отлично:

test.frame<-read.table(file="mydata.log",sep= "", nrows=32,blank.lines.skip=TRUE)

Причина, по которой вы получаете только 6 строк в выводе, заключается в том, что вы используете head.Чтобы просмотреть все строки, просто введите имя вашего объекта:

> test.frame
           V1     V2
1       0.000 0.0000
2     144.321 0.3400
3     159.407 0.8925
4     198.413 0.9450
5     222.557 0.9975
6     235.464 1.0500
7     296.918 1.1025
8     346.773 1.1550
9     442.955 1.2075
10    694.879 1.2600
11    892.436 1.3125
12   1492.970 1.3650
13   2916.960 1.4175
14   3596.060 1.4700
15   5278.950 1.5225
16   7480.730 1.5750
17  12259.800 1.6275
18  14032.600 1.6800
19  19565.600 1.7325
20  31427.700 1.7850
21  58221.400 1.8375
22  92283.900 1.9900
23 165601.000 1.9425
24 165703.000 1.9950
25 213925.000 2.8750
26 260381.000 2.1000
27 312701.000 2.1525
28 370853.000 2.2050
29 479303.000 2.2575
30 487265.000 2.3100
31 545225.000 2.3625
32 703186.000 2.4150

Вот простой способ узнать, сколько у вас строк (полезно, когда у вас много наблюдений):

nrow (test.frame) [1] 32

Что касается количества цифр, см. Команду round.Чтобы просмотреть документацию по команде, введите ?, а затем команду, в данном случае функцию: ?round

#note that you do not have to put "digits=2", you can just put "2", but this way is clearer
> rounded_test.frame <- round(test.frame, digits=2)
> rounded_test.frame
          V1   V2
1       0.00 0.00
2     144.32 0.34
3     159.41 0.89
4     198.41 0.94
5     222.56 1.00
6     235.46 1.05
7     296.92 1.10
8     346.77 1.16
9     442.95 1.21
10    694.88 1.26
11    892.44 1.31
12   1492.97 1.36
13   2916.96 1.42
14   3596.06 1.47
15   5278.95 1.52
16   7480.73 1.57
17  12259.80 1.63
18  14032.60 1.68
19  19565.60 1.73
20  31427.70 1.78
21  58221.40 1.84
22  92283.90 1.99
23 165601.00 1.94
24 165703.00 2.00
25 213925.00 2.88
26 260381.00 2.10
27 312701.00 2.15
28 370853.00 2.21
29 479303.00 2.26
30 487265.00 2.31
31 545225.00 2.36
32 703186.00 2.42

Обратите внимание, что выше я создал новый объект вместо заменытекущий.Если вы хотите заменить текущую и потерять данные навсегда (пока вы, конечно, не перезагрузите набор данных!), Вы можете использовать эту строку вместо:

test.frame <- round(test.frame, digits=2)

Если вы не хотите сжиматьваши цифры, вы могли бы просто интересоваться просмотром округленных чисел.Вы можете сделать это следующей командой:

print(test.frame,digits=2)
1 голос
/ 14 марта 2012

Вместо nrow(), как предложено, я бы рекомендовал str() ("структура"), которая дает вам более полезную информацию о вашем наборе данных (класс переменных и т. Д.).Это также немного менее загадочно ....:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...