2015-09-24 1 views
3

Я изо всех сил пытаюсь преобразовать свой текстовый файл в таблицу в R. Проблема заключается в том, что столбцы разделены «#», но когда я использую функцию read.table() с sep="#", она по-прежнему не выглядит нормальной таблицу и возвращает массу ошибок.Преобразование текста в таблицу, разделитель как #

Как я могу это решить?

Текстовый файл выглядит следующим образом:

Hotel Van Walsum#121800#3#4.2#70#0.7 miles to City centre?# 
Bilderberg Parkhotel Rotterdam#124547#4#3.7#83#0.5 miles to City centre?# 
NH Atlanta Rotterdam#208643#4#3.9#55#0.3 miles to City centre?# 
Nhow Rotterdam#439534#4#4.3#83#1.3 miles to City centre?# 
The Manhattan Hotel Rotterdam#173187#5#4.5#101#0.1 miles to City centre?# 
Mainport#427255#5#4.7#112#0.8 miles to City centre?# 
easyHotel Rotterdam City Centre#438095#2#3.8#49#0.5 miles to City centre?# 
ss Rotterdam Hotel & Restaurants#277518#4#4.3#84#1.8 miles to City centre?# 
H2otel#276462#3#4.1#67#0.7 miles to City centre?# 
Van der Valk Hotel Rotterdam-Blijdorp#272914#4#4.1#71#1.4 miles to City centre?# 
NH Capelle#139024#4#4.1#55#4.5 miles to City centre?# 
The Student Hotel Rotterdam#434163#3#4.2#62#1.3 miles to City centre?# 
Novotel Rotterdam Brainpark#124868#4#4.4#69#2.4 miles to City centre?# 
Hotel Van Walsum#121800#3#4.2#70#0.7 miles to City centre?# 
Hampshire Hotel - Savoy Rotterdam#115253#4#3.7#65#0.8 miles to City centre?# 
Delta Hotel Rotterdam#179050#4#4.2#80#5.8 miles to City centre?# 
Novotel Rotterdam Schiedam#144828#4#4.3#69#4.2 miles to City centre?# 
Hotel Rotterdam#209923#4#3.7#74#0.4 miles to City centre?# 
+0

Это потому, что # марка является комментарием в R? Когда я пробовал это быстро, чтение в 'Hello # my # name # is # brian', оно будет читать только «hello», независимо от того, какой символ я использовал в качестве разделителя. Было бы проще переписать таблицу – Henry

ответ

5

Нам нужно будет указать разделитель поля и символ комментария в read.table:

read.table("myFile.txt", sep = "#", comment.char = "") 
5

Вы можете загрузить его с помощью другого comment.char, тот, который не будет в вашем файле, как #

Эта работа:

df <- read.table(text='Hotel Van Walsum#121800#3#4.2#70#0.7 miles to City centre?# 
Bilderberg Parkhotel Rotterdam#124547#4#3.7#83#0.5 miles to City centre?# 
NH Atlanta Rotterdam#208643#4#3.9#55#0.3 miles to City centre?# 
Nhow Rotterdam#439534#4#4.3#83#1.3 miles to City centre?# 
The Manhattan Hotel Rotterdam#173187#5#4.5#101#0.1 miles to City centre?# 
Mainport#427255#5#4.7#112#0.8 miles to City centre?# 
easyHotel Rotterdam City Centre#438095#2#3.8#49#0.5 miles to City centre?# 
ss Rotterdam Hotel & Restaurants#277518#4#4.3#84#1.8 miles to City centre?# 
H2otel#276462#3#4.1#67#0.7 miles to City centre?# 
Van der Valk Hotel Rotterdam-Blijdorp#272914#4#4.1#71#1.4 miles to City centre?# 
NH Capelle#139024#4#4.1#55#4.5 miles to City centre?# 
The Student Hotel Rotterdam#434163#3#4.2#62#1.3 miles to City centre?# 
Novotel Rotterdam Brainpark#124868#4#4.4#69#2.4 miles to City centre?# 
Hotel Van Walsum#121800#3#4.2#70#0.7 miles to City centre?# 
Hampshire Hotel - Savoy Rotterdam#115253#4#3.7#65#0.8 miles to City centre?# 
Delta Hotel Rotterdam#179050#4#4.2#80#5.8 miles to City centre?# 
Novotel Rotterdam Schiedam#144828#4#4.3#69#4.2 miles to City centre?# 
Hotel Rotterdam#209923#4#3.7#74#0.4 miles to City centre?#', sep='#', comment.char='*') 

Выход:

df 
             V1  V2 V3 V4 V5      V6 V7 
1      Hotel Van Walsum 121800 3 4.2 70 0.7 miles to City centre? NA 
2   Bilderberg Parkhotel Rotterdam 124547 4 3.7 83 0.5 miles to City centre? NA 
3     NH Atlanta Rotterdam 208643 4 3.9 55 0.3 miles to City centre? NA 
4       Nhow Rotterdam 439534 4 4.3 83 1.3 miles to City centre? NA 
5   The Manhattan Hotel Rotterdam 173187 5 4.5 101 0.1 miles to City centre? NA 
6        Mainport 427255 5 4.7 112 0.8 miles to City centre? NA 
7  easyHotel Rotterdam City Centre 438095 2 3.8 49 0.5 miles to City centre? NA 
8  ss Rotterdam Hotel & Restaurants 277518 4 4.3 84 1.8 miles to City centre? NA 
9         H2otel 276462 3 4.1 67 0.7 miles to City centre? NA 
10 Van der Valk Hotel Rotterdam-Blijdorp 272914 4 4.1 71 1.4 miles to City centre? NA 
11       NH Capelle 139024 4 4.1 55 4.5 miles to City centre? NA 
12   The Student Hotel Rotterdam 434163 3 4.2 62 1.3 miles to City centre? NA 
13   Novotel Rotterdam Brainpark 124868 4 4.4 69 2.4 miles to City centre? NA 
14      Hotel Van Walsum 121800 3 4.2 70 0.7 miles to City centre? NA 
15  Hampshire Hotel - Savoy Rotterdam 115253 4 3.7 65 0.8 miles to City centre? NA 
16     Delta Hotel Rotterdam 179050 4 4.2 80 5.8 miles to City centre? NA 
17   Novotel Rotterdam Schiedam 144828 4 4.3 69 4.2 miles to City centre? NA 
18      Hotel Rotterdam 209923 4 3.7 74 0.4 miles to City centre? NA 
3

read.table, read.csv, read.delim все они используются для чтения файлов и конвертировать в кадр данных с некоторыми тонкими изменениями по отношению друг к другу.

read.table(file, header = FALSE, sep = "", quote = "\"'", 
      dec = ".", numerals = c("allow.loss", "warn.loss", "no.loss"), 
      row.names, col.names, as.is = !stringsAsFactors, 
      na.strings = "NA", colClasses = NA, nrows = -1, 
      skip = 0, check.names = TRUE, fill = !blank.lines.skip, 
      strip.white = FALSE, blank.lines.skip = TRUE, 
      comment.char = "#", 
      allowEscapes = FALSE, flush = FALSE, 
      stringsAsFactors = default.stringsAsFactors(), 
      fileEncoding = "", encoding = "unknown", text, skipNul = FALSE) 

read.table имеет значение по умолчанию comment.char="#", что означает в тексте могут быть комментарии, обозначаемые #. Чтобы читать файлы csv или файлы с разделителями любым символом, используйте read.csv или read.delim, где нет значения по умолчанию comment.char просто укажите свой символ sep.

По умолчанию read.csv является

read.csv(file, header = TRUE, sep = "#", quote = "\"", 
     dec = ".", fill = TRUE, comment.char = "", ...) 

Вы можете использовать

read.csv(file, sep="#",header=F)