Использую ли я Rvest или read.txt функция () и как со следующими данными

#r #file #import #rvest

#r #файл #импорт #rvest

Вопрос:

Я хочу импортировать 100 текстовых файлов с веб-сайта, но как мне преобразовать их в нужный мне формат. Вот пример данных:

 NOTE: futures symbols begin with the character @
      index symbols begin with the character $

Symbol (option symbols)           hv20  hv50 hv100    DATE   curiv Days/Percentile Close
****************************************************************
*  Data generated by McMillan Analysis Corp.    Copyright 2019 *
*   www.optionstrategist.com                800-724-1817       *
****************************************************************
$BKX                                22    18    22  190211   21.42    15/ 20%ile   91.76
$DJX                                10    11    20  190322   16.24   600/ 84%ile  255.02
$HGX                                16    15    23  190322   22.61   378/ 70%ile  286.36
$MNX 
  

файлы взяты с веб-сайта подписки и сохранены в виде текста, например.
vh_sym_20190322, если кто-нибудь может мне помочь, я был бы признателен.
Мне не только нужно загружать объемные текстовые файлы, но затем мне нужно обработать их так, чтобы у меня были только заголовки, например. «Symbol», «hv28» и т.д., А также данные с символами и цифрами, например. «$ BKX», «22» и т.д., Еще раз спасибо всем, кто может предложить помощь.
PS. Я подписываюсь на данные этой компании.

Комментарии:

1. Очень маловероятно, что вы использовали бы либо Rvest либо read.txt . (Правописание имеет решающее значение при указании компьютерам, что делать.) Я бы использовал readLines , чтобы перевести их в R, а затем read.fwf , как только вы удалите весь crud.

Ответ №1:

Предполагая, что файл точно такой, это работает:

 cn <- read.fwf("~/Downloads/foo.txt", c(34, 4, 6, 6, 8, 8, 16, 6), skip=3, comment.char="*", header=F, n=1)
cn
#                                   V1   V2     V3     V4       V5       V6               V7
# 1 Symbol (option symbols)            hv20   hv50  hv100     DATE    curiv  Days/Percentile
#       V8
# 1  Close
cn <- make.names(trimws(unlist(cn)))
cn
# [1] "Symbol..option.symbols." "hv20"                    "hv50"                   
# [4] "hv100"                   "DATE"                    "curiv"                  
# [7] "Days.Percentile"         "Close"                  
dat <- read.fwf("~/Downloads/foo.txt", c(34, 4, 6, 6, 8, 8, 16, 6), skip=4, comment.char="*", header=FALSE)
colnames(dat) <- cn
str(dat)
# 'data.frame': 3 obs. of  8 variables:
#  $ Symbol..option.symbols.: Factor w/ 3 levels "$BKX                              ",..: 1 2 3
#  $ hv20                   : int  22 10 16
#  $ hv50                   : int  18 11 15
#  $ hv100                  : int  22 20 23
#  $ DATE                   : int  190211 190322 190322
#  $ curiv                  : num  21.4 16.2 22.6
#  $ Days.Percentile        : Factor w/ 3 levels "    15/ 20%ile  ",..: 1 3 2
#  $ Close                  : num  91.8 255 286.4
  

Возможно, вы захотите обновить имена столбцов и / или включить stringsAsFactors=FALSE . После этого у вас будет небольшая очистка данных, например, Days.Percentile похоже, что объединенная ячейка была менее тривиальной для очистки только при чтении с фиксированной шириной.

Комментарии:

1. Это отлично работает, за исключением того, что там было 21 строка мусора, она была урезана до 3 при вставке в stack overflow, хотя таблица правильная, но у меня все еще есть около 17 строк мусора,

2. cn <- read.fwf(«~/2_R Библиотека и код /RWorkFiles/McMillan Volatility/vh_sym_20190322.txt «, c(34, 4, 6, 6, 8, 8, 16, 6), пропустить = 21, комментарий.char = » «, заголовок = F, n =1) cn cn <- make.names(trimws(unlist(cn))) cn # [1] «Символ..опция.символы». «hv20» dat <- read.fwf(«~/2_R Библиотека и код /RWorkFiles/McMillan Volatility/vh_sym_20190322.txt «, c(34, 4, 6, 6, 8, 8, 16, 6), пропустить = 4, комментарий.char = » «, заголовок = FALSE) имена столбцов (dat) <- cn str(dat)

3. Вот мусор

4. 1 hv50: 50-дневная историческая волатильность NA NA NA NA NA NA NA NA 2 hv100: 100-дневная историческая волатильность NA NA NA NA NA NA NA 3 ДАТА: дата последних данных по ОПЦИОНУ NA NA NA NA NA NA NA NA 4 (опционы не торгуются каждый день для каждого базового варианта NA NA 5 cur_iv: подразумеваемая волатильность выбранных вариантов на ДАТУ NA NA NA NA 6 Дней: количество дней назад, для которых было изменено значение в олатилит у вас есть

5. нет, я не хотел оставлять без ответа, я просто нажал на нее, и она не изменилась бы обратно.