[МУЗЫКА] [МУЗЫКА] [МУЗЫКА] В этом видео мы научимся загружать внешние данные, то есть то, что было приведено в электронный вид средствами, не использующими систему R. Скачайте с сайта курса файлы Titanic_xls_book.xls с расширением Экселя и Titanic с расширением csv и положите эти два файла в папку data внутри рабочей директории. Информация в этих двух файлах абсолютно идентична, но записана в разных форматах. И вот, мы здесь будем разбираться с данными, которые характеризуют пассажиров рокового рейса «Титаника». В R разработано множество пакетов, которые позволяют читать самые разнообразные данные, начиная с привычного многим формата файлов, созданных в программах Excel или Calc и других аналогах. Это файлы с расширением .xls или .xlsx. Для работы с данными этого типа необходимо установить пакет readxl. Соответственно, воспользовавшись функцией Install packages, вы можете установить этот самый пакет. Если пакет уже установлен, то его надо активировать с помощью функции library, и после активации вы можете прочитать тот текст, тот data set, который лежит в директории data. Для этого необходимо указать в кавычках путь к этому источнику данных. Однако книги excel содержат еще и листы. Поэтому в параметре sheet надо указать имя того листа, с которого вы будете скачивать необходимые данные. Соответственно, если у вас один-единственный лист, вы можете не указывать имя этого листа. Но если у вас указывается все-таки имя листа, вы должны указать это имя в апострофах или в кавычках. Если вы посмотрите на получившийся объект под названием titanic, с помощью функции head, вам сообщат, что этот объект является объектом класса tibble. Не должны этому удивляться. Дело в том, что класс tibble обладает теми же практически свойствами, что и объекты из класса data frame. Если вам нужна более подробная справка, вы можете набрать через знак вопроса tibble и получить справку о таких объектах. С такими объектами можно работать точно так же, как дата фреймами, можно вызывать справку по этому типу объектов, короче говоря, здесь все более-менее одинаково, как и с дата фреймами. И вот, чтение в формате excel достаточно легко осуществляется, и встает вопрос, почему же нам не использовать именно этот формат в качестве основного, к excel все привыкли, и в общем, здесь скорее всего исходные данные вы получите именно в этом формате. Однако здесь есть целый ряд подводных камней. Дело в том, что программа Excel во многих отношениях, конечно, хороша и удобна — в ней легко и быстро набивать данные, эти данные можно загрузить в R без всякой дополнительной подготовки, однако к этой бочке меда можно добавить несколько ложек дегтя. Во-первых, Excel используют далеко не все пользователи — кто-то работает, например, на макинтошах, там никакой программы Excel нет. Далее, для того чтобы читать экселевские файлы, необходим специальный пакет для перевода данных в R. Понятно, что этот пакет всегда можно загрузить, но представьте ситуацию, в которой вы не имеете доступа к сети и это пакет вы загрузить не можете. Далее, среда Excel не требовательна к структурированию данных — она очень демократична, и там можно творить все, что захочешь с таблицами данных. И это приводит к тому, что всегда существует вероятность некоторых ошибок. Мы можем пропустить строчку, поставить лишние пробелы и тому подобное — все это, на самом деле, серьезнейшим образом отражается на наших данных. Далее, файлы могут иметь очень большой размер. Соответственно, пересылать по, скажем, электронной почте экселевские файлы бывает далеко не всегда просто, а иногда и невозможно. Соответственно, все это делает формат Excel далеко не самым удобным. Мы крайне рекомендуем вам освоить помимо бинарных файлов, которых довольно много — это и экселевские файлы, и формат .dbf, и .sas, и .sta, много всяких форматов, которые поддерживаются определенными статистическими программами. Так вот, помимо этих бинарных файлов, есть еще форматы, которые оказываются универсальными, — по сути это текстовые форматы, которые понимаются любой системой, понимающей использование той же самой, кодировки текста. Как правило, файлы с текстом и форматом данных имеют расширение .txt или .csv, и вот эти файлы могут читаться практически любыми системами, понимающими данную кодировку, которую использует ваш компьютер. Чаще всего, имея дело с данными, записанными в текстовом формате, мы сталкиваемся с так называемыми CSV-файлами. Название этого формата происходит от словосочетания Comma-Separated Values, то есть значения, разделенные запятыми. Это наиболее удобный тип файлов, и мы всячески рекомендуем использовать именно его для передачи своих данных, для хранения данных, которые далее будут использованы для работы в среде R. Значения в файлах такого формата разделены некоторым разделителем — как правило, запятой или точкой с запятой, пробелом, знаком табуляции и тому подобное. И вот CSV-файлы можно просматривать и редактировать как в электронных таблицах типа Excel, так и в любом другом текстовом редакторе, например, в Word, Notepad и где угодно. Соответственно, CSV-файлы оказываются очень небольшими по размеру и удобными для передачи по сети, поэтому действительно очень многие файлы, которые содержат данные, необходимые для загрузки, представлены в CSV-форматах. Создать CSV-файл в Excel на самом деле очень просто. Он прекрасно получается из обычной экселевской таблицы. Для этого необходимо таблицу данных сохранить как CSV-файл. Для этого мы заходим меню Файл, там выбираем в качестве типа файлов «Выбрать CSV» с разделителями запятыми. На самом деле, в разных программах могут быть небольшие вариации, но суть везде будет более-менее одинаковой. После сохранения этого файла в формате CSV мы можем посмотреть, и, при желании, отредактировать этот файл, открыв его, например, в блокноте. Есть только один нюанс. Вот, внимание! Обратите внимание, что Excel в своей российской, скандинавской и немецкой версиях в качестве разделителя использует не запятую, а точку с запятой. В этом нет ничего страшного, но об этом надо просто помнить. Если вы об этом не знаете, можно некоторое время потратить на выяснение, почему же, собственно, не работает та или иная функция. Теперь загрузим файл, который мы получили в формате .csv в среду R. Для этого нам понадобится специальная функция, которая называется read.table(). И в этой функции есть целый ряд аргументов. Если мы напишем эту функцию просто с одним аргументом, соответствующим имени файла, соответствующим путем, то после активации этого кода мы увидим какую-то слившуюся массу, в которой все значения, которые у нас должны быть разделены по колонкам, почему-то свалились в одну переменную V1, и дальше они не разделились на требуемые колонки. Это означает, что нам нужно указать еще несколько важных параметров. И это следующие параметры — во-первых, это параметр sep, который приводится через запятую после первого параметра, в котором находится имя файла. Sep — это separator (разделитель). И поскольку у нас в качестве разделителя используется точка с запятой, то мы должны в апострофах или в кавычках указать, что именно этот знак будет использоваться в качестве разделителя. Второй важный параметр, который надо указать, он называется header. Это логический параметр, если в нем стоит TRUE — это означает, что первая строчка нашего дата сета, которая представлена в CSV-файле, будет рассматриваться как строчка, содержащая заголовки для колонок. Соответственно, у нас в этой точке стоят названия колонок, и вот они здесь у нас после применения этого параметра и появились. Соответственно, после активации этого кода, мы видим, что теперь наш data frame представлен в виде достаточно хорошо разделенных колонок, в каждой из которых находится определенная информация. На самом деле, в параметре read.table довольно много еще других аргументов, которыми можно регулировать чтение данных, но пока нам достаточно этих вот трех, которые мы обсудили. Все, как видите, не сложнее, чем чтение файла в формате Excel. Остается только положить прочитанные данные в некоторую переменную с которой далее можно работать, то есть результаты работы функции read.table мы записываем в переменную под названием titanic. Данные могут находиться не только на вашем компьютере, но могут также лежать на некотором сайте сети. При чтении таких файлов можно вместо пути к локальному файлу указать путь к сетевому ресурсу, и в остальном все точно будет так же, как мы только что обсудили. Например, если у нас данные titanic находятся на каком-то сайте с длинным-длинным именем, мы можем указать это имя сайта в качестве первого параметра для функции read.table, а дальше все то же самое — separator у нас будет точка с запятой, header — TRUE, и результаты работы этой функции будут совершенно точно такие же, как мы описали ранее.