0:14
Перейдём к одному из очень важных моментов, как загрузить данные в R,
поскольку, естественно, как правило, данные собирают одни люди,
а модель оценивают другие люди, или данные у вас уже собраны.
Это очень важный вопрос.
Соответственно, давайте сначала начнём с того,
как сохранить результаты нашего исследования.
Во-первых, в R есть такое понятие как рабочая папка, то есть папка,
к которой R будет обращаться, в которой он будет сохранять файлы или из которой он
будет читать файлы по умолчанию.
Соответственно, можно установить эту папку, выбрав Session,
Set Working Directory, и, соответственно, либо можно её просто выбрать руками,
Choose Directory, либо выбрать такую опцию, например, To Source File Location,
то есть в ту же папку, где хранится файл R, с которым вы работаете.
У меня данные лежат в той же папке, что и файл R,
поэтому я выберу Session, Set Working Directory, To Source File Location.
Но если не получилось, то просто выберите руками ту папку, где лежат ваши данные.
На самом деле исполнение этой «менюшки» просто эквивалентно тоже команде R.
То есть на самом деле можно было по «менюшке» не лазить,
а дать вот такую команду, но при этом, конечно,
надо знать название той папки, где у вас хранятся данные.
Мы сначала попробуем сделать задачу: мы сохраним результат нашего исследования,
чтобы якобы мы их как бы прочитали.
Это первый момент.
Значит, сохранение результатов работы.
К примеру, вы работали, экспериментировали и решили,
что вот из всех ваших экспериментов часть была бесполезной, оказалась, но, вернее,
они были полезны, но они вам помогли что-то обнаружить, что чего-то нет,
но ценными оказались некоторые модели, не все, а только некоторые.
И вы решили, допустим, сохранить model2 и решили сохранить, сам набор данных h.
Соответственно, мы самое ценное, что хотим сохранить,
мы поместим это в список, соответственно,
давайте назовём его stuff,
равняется list,
и тут укажем, что данные мы возьмём h,
и, например,
model — это будет model2.
Соответственно, stuff — это будет, вот можно посмотреть,
что такое stuff, stuff — это список из двух объектов: объекта data и объекта,
тут ниже можете листать, model.
И теперь мы сохраним этот наш список из двух вещей.
Соответственно, saveRDS.
На всякий случай ещё раз напоминаю, что R отличает маленькие и заглавные буквы,
то есть будьте внимательны: save маленькими, RDS заглавными.
Мы сохраняем в файл,
будет называться, скажем, mydata.Rds
А мы сохраним тут вот наш список stuff.
Вот он сохранился.
Можно открыть папку и обнаружить, что здесь в папке появился файл mydata.Rds
Он небольшой, R очень компактно пишет свои данные все, это одна из его особенностей.
И теперь, в принципе,
мы можем начать работу заново, то есть закрыть всё, всё забыть.
Но давайте мы не будем для удобства всё закрывать, но тем не менее сделаем вид,
что мы всё закрыли, заново открыли.
И — загрузить наши данные.
То есть встаём в нужную папку и,
соответственно, загружаем наши данные пусть в какой-то другой список, давайте,
список mylist равняется, и на это раз я
напишу readRDS, то есть прочитаю файл с ранее сохранёнными данными.
Тут надо, естественно, знать то, как назывался файл.
Еще раз. Поскольку R позволяет по tab'у дополнять,
то можно только написать кавычки, нажать tab,
и R вам покажет все файлы в той папке, которую вы установили как рабочую.
Можно выбрать нужный файл, нажать окей,
и теперь данные из этого файла поместились в список mylist.
И можно посмотреть, что живет в этом списке.
В списке mylist нажать mylist$,
нажать tab и посмотреть: там живут данные, и там живёт model.
И, например, можно посмотреть,
и вернуться к старой модели, посмотреть summary.
И вот у нас та же самая model2,
которую мы поместили в список stuff, потом сохранили, потом прочитали.
Формат RDS — это внутренний формат R, который очень компактный.
R его очень быстро записывает, очень быстро читает.
Но его недостатком является то, что это его внутренний формат,
он нечеловекочитабельный и, соответственно,
самым распространённым форматом является не Rds,
а так называемый формат csv.
csv расшифровывается как comma separated values,
что означает: «значения, разделённые запятыми».
То есть файл представляет собой текстовый файл обычный,
в котором есть или нет названий переменных, иногда названия указывают,
иногда не указывают, а дальше в отдельный столбик идёт первая переменная,
в другой столбик вторая и так далее.
Вообще стандарт предусматривает разделение запятой,
и в самом названии содержится слово «запятая»,
но на практике разделяют, несмотря на название файла csv.
Разделение там может быть чем угодно: могут отделяться отдельные наблюдения
табуляциями, могут точкой с запятой, хотя на самом деле стандарт предусматривает,
что значения должны быть разделены запятыми.
И давайте попробуем прочитать какой-нибудь файл в формате csv.
Я специально выбрал файл, который не совсем в формате csv,
чтобы это было для нас лишней сложностью и для вас было бы проще,
когда вы на практике столкнётесь с чтением какого-то файла,
который вроде как csv, но не совсем csv, не совсем по стандарту.
Чтобы прочитать, сначала просто визуально посмотрите на ваш файл.
То есть вот я беру файл с данными по ценам квартир в Москве.
Это достаточно старые данные, но тем не менее.
И вот я его открываю просто в Блокноте,
или в любом другом редакторе текстовых файлов.
И что я вижу?
Я вижу, что у меня в первой строчке есть названия переменных,
это важный момент, который надо отметить.
Дальше, что я вижу?
Я вижу еще такой момент важный: в российских данных по-разному,
— некоторые авторы используют запятую в качестве разделителя,
а большая часть населения земного шара использует точку, то есть там китайцы,
американцы используют точку.
Поэтому вот надо всегда присматриваться к тому,
как у вас разделена целая часть от дробной.
И я вижу, что здесь точка.
Это второй момент, который я отмечаю.
И третий момент, который я отмечаю, открыв этот файл,
— это как разделены отдельные наблюдения.
Здесь я вижу, что между соседними наблюдениями,
вот это третье наблюдение, вот цена, вот это общая площадь totalspan.
Я вижу, что не запятая отделяет наблюдения,
не точка с запятой и не пачка пробелов,
а я вижу, что вот один такой неразрывный знак, это табуляция.
Соответственно, я, посмотрев на файл,
выяснил для себя три момента: есть заголовок, данные отделяются табуляцией,
и точка используется как разделитель десятичной части.
Соответственно, это не совсем стандарт csv,
потому что в стандарте csv должна была бы быть не табуляция, а запятая.
Ну и ладно, мы все равно его прочитаем.
Соответственно, поместим наши данные в табличку t.
Можно, конечно, делать по принципу «я счастливчик и мне повезёт».
read.csv и в кавычках набрать имя файла flats_moscow.txt и посмотреть,
что получится.
И посмотреть на, значит, наш файл, glimpse(t).
Но видно, что что-то тут не то.
Вот, соответственно, чтобы прочитать этот файл, мы выяснили,
что он не совсем стандарта csv, поэтому функция вот так по умолчанию не сработала.
Поэтому давайте мы укажем вот эти три важных составляющих момента при
чтении файлов.
Что является разделителем?
Разделителем у нас является табуляция.
Что является...
Это был separator, разделитель данных.
Что является десятичным разделителем, то есть что отделяет дробную часть от целой?
Точка. И дальше надо указать,
что первая строчка — это ещё не сами данные а первая строчка — это были
названия переменных, это header равно TRUE,
то есть header принимает значение TRUE или FALSE, если название переменных.
Десятичный разделитель указали, указали разделитель между наблюдениями, и теперь
попробуем прочитать наш файл и посмотреть ещё раз на прочитанные нами данные.
Вот мы увидим, что на этот раз всё замечательно прочиталось, и мы, скажем,
можем оценить модель линейной регрессии.
Взять данные из таблички t и посмотреть, как цена квартиры зависит,
скажем, от общей площади и является ли дом кирпичным, переменная brick.
Вот можно посмотреть, у нас всё отлично загрузилось.
Это был набор данных, не встроенный в R, это мы загрузили csv
файл.