Читаем Основы статистической обработки педагогической информации полностью

Дело в том, что в R используется арифметика конечной точности, так как затруднительно хранить бесконечное количество цифр, либо реализовывать алгебраический подход. Поэтому каждое число в R является приближением, а вместо оператора == нередко используется функция near, позволяющая сравнивать приближенные величины:

near(sqrt(5) ^ 2, 5)

# > [1] TRUE

Несколько аргументов функции filter перечисленные через запятую равносильны объединению условий союзом «и», при этом, каждое выражение должно оказаться истинным, чтобы из входных данных соответствующая запись была сохранена в выходные данные. Для остальных логических связок можно использовать булевы операторы: & это «и», | это «или», ! это отрицание «не», xor(xy) это исключающее или с аргументами xy.

Следующий код находит все рейсы, которые вылетели в феврале или марте:

filter(flights, month == 2 | month == 3)

Если попытаться ввести команду буквально

filter(flights, month == (2|3))

то вместо желаемого будут найдены все месяцы равные результату булевой операции 2|3, значение которой обращается в TRUE. В числовом контексте TRUE становится равным единице 1, поэтому будут найдены все январские вылеты, что вовсе не соответствует задуманному.

Полезным клавиатурным сокращением для решения обозначенной проблемы является x %in% y. Это позволит выбрать каждую строку, где x является одним из значений в y. Можно было бы использовать следующую альтернативу для кода выше:

filter(flights, month %in% c(2, 3))

Иногда можно упростить сложное выражение вспомнив законы де Моргана из курса математической логики: !(x & y) == !х | !y, и !(x | y) == !x & !y. Например, если нужно найти рейсы, которые не задерживались (по прилету или отправлению) более чем на час, можно воспользоваться любым из следующих фильтров:

filter(flights,!(arr_delay > 60 | dep_delay > 60))

filter(flights, arr_delay <= 60, dep_delay <= 60)

Кроме & и |, в R есть && и ||, но не используйте их сейчас, позже узнаете, при каких условиях уместно их применение.

Всякий раз, когда используется сложное составное выражение в filter, предпочтительнее разбить выражение на несколько вспомогательных, это значительно упрощает последующую проверку работы. Вскоре узнаем, как быстро создать новые переменные. Одна важная особенность R, которая может затруднить фильтрацию, это пропущенные значения, или недоступные (NA), которые представляют собой неизвестное значение, поэтому пропущенные значения являются изгоями, практически любая операция с участием NA приведет к NA.

NA > 1

#> [1] NA

2 == NA

#> [1] NA

NA + 3

#> [1] NA

NA / 4

#> [1] NA

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

NA == NA

#> [1] NA

Но его легко понять в конкретном контексте: совпадает ли содержимое двух ящиков, внутри которых неизвестно что? Мы не знаем! Если хотите определить, отсутствует ли значение конкретной переменной, можно воспользоваться функцией is.na, в качестве аргумента задав интересующее имя. Функция filter отбирает только те строки, для проверяемые условия обращаются в TRUE, при этом исключаются как значения FALSE, так и NA. Если хотите сохранить пропущенные значения, то запрашивайте их в явном виде:

filter (flights, is.na(month) | month > 1)

Упражнения

1. Найти все рейсы, которые: имели задержку прибытия на два и более часа; прилетели в Хьюстон; управлялись компанией Delta; улетели летом; прибыл с опозданием более чем на два часа; задержались они как минимум на час, но наверстали более 30 минут в полете; отбыли между полуночью и 6 утра (включительно).

2. Функция between из пакета dplyr тоже полезна для фильтрации. А что она делает? Можно ли использовать её для упрощения кода, необходимого для получения ответов в предыдущем задании?

3. Сколько рейсов имеет отсутствующее значение dep_time? Какие еще переменные у них отсутствуют? Что могут представлять собой эти записи в базе данных?

4. Почему значение NA^0 определено, NA / TRUE не определено, а FALSE & NA определено? Можете ли сформулировать общее правило, охватывающее и случай NA * 0?

Функция arrange работает аналогично функции filter, за исключением того, что вместо выбора строк, сортирует их. На вход принимаются данные и набор имен столбцов (или более сложных выражений), чтобы задать отношение порядка по возрастанию. Если укажете более одного имени столбца, то каждый последующий столбец будет сортировать значения строк с равными значениями из предыдущих столбцов:

arrange(flights, year, month, day)

Используя desc можно переданный в аргументе столбец упорядочить по убыванию значений:

arrange(flights, desc(dep_delay))

Пропущенные значения (NA) всегда оказываются в конце сортировки.

Упражнения

1. Как использовать функцию arrange для переноса всех пропущенных значений в начало списка? (Подсказка: применимо is.na).

2. Сортировка рейсов позволяет найти самые задерживаемые рейсы. Найдите рейсы, которые вылетали пунктуальнее всех.

3. Отсортируйте рейсы так, чтобы найти самые скоростные перелёты.

4. Какие рейсы летали дальше всех? Какой маршрут был самым коротким?

Перейти на страницу:

Похожие книги

10 заповедей коммуникационной войны. Как победить СМИ, Instagram и Facebook
10 заповедей коммуникационной войны. Как победить СМИ, Instagram и Facebook

Благодаря развитию социальных сетей и интернета информация сейчас распространяется с ужасающей скоростью – И не всегда правдивая или та, которую мы готовы раскрыть. Пост какого-нибудь влогера, который превратит вашу жизнь в кромешный ад, лишит ваш бизнес потребителей, заставит оправдываться перед акционерами, партнерами и клиентами всего лишь вопрос времени.Как реагировать, если кто-то сообщает ложные сведения о вас или вашем бизнесе? Что делать, если вы оказались вовлечены в публичный конфликт? Как правильно признать свою ошибку?Авторы книги предлагают 10 универсальных заповедей – способов поведения, которые помогут вам выйти из сложных коммуникационных ситуаций, а два десятка практических примеров (как положительных, так и отрицательных) наглядно демонстрируют широту и особенности их применения.Вряд ли у вас получится поставить эту книгу на полку, прочитав один раз. Оставьте ее на виду, обращайтесь к ней как можно чаще, и тогда у вас появится шанс выжить в коммуникационном армагеддоне XXI века.

Дмитрий Солопов , Каролина Гладкова

Маркетинг, PR / Менеджмент / Финансы и бизнес
Управление рисками
Управление рисками

Harvard Business Review – ведущий деловой журнал с многолетней историей. В этот сборник вошли лучшие статьи авторов HBR на тему риск-менеджмента.Инсайдерские атаки, саботаж, нарушение цепочек поставок, техногенные катастрофы и политические кризисы влияют на устойчивость организаций. Пытаясь их предотвратить, большинство руководителей вводят все новые и новые правила и принуждают сотрудников их выполнять. Однако переоценка некоторых рисков и невозможность предусмотреть скрытые угрозы приводят к тому, что компании нерационально расходуют ресурсы, а это может нанести серьезный, а то и непоправимый ущерб бизнесу. Прочитав этот сборник, вы узнаете о категориях рисков и внедрении процессов по управлению ими, научитесь использовать неопределенность для прорывных инноваций и сможете избежать распространенных ошибок прогнозирования, чтобы получить конкурентное преимущество.Статьи Нассима Талеба, Кондолизы Райс, Роберта Каплана и других авторов HBR помогут вам выстроить эффективную стратегию управления рисками и подготовиться к будущим вызовам.Способность компании противостоять штормам во многом зависит от того, насколько серьезно лидеры воспринимают свою функцию управления рисками в то время, когда светит солнце и горизонт чист.Иногда попытки уклониться от риска в действительности его увеличивают, а готовность принять на себя больше риска позволяет более эффективно им управлять.Все организации стремятся учиться на ошибках. Немногие ищут возможность почерпнуть что-то из событий, которые могли бы закончиться плохо, но все обошлось благодаря удачному стечению обстоятельств. Руководители должны понимать и учитывать: если люди спаслись, будучи на волосок от гибели, они склонны приписывать это устойчивости системы, хотя столь же вероятно, что сама эта ситуация сложилась из-за уязвимости системы.Для когоДля руководителей, глав компаний, генеральных директоров и собственников бизнеса.

Harvard Business Review (HBR) , Сергей Каледин , Тулкин Нарметов

Карьера, кадры / Экономика / Менеджмент / Финансы и бизнес
Управление дебиторской задолженностью
Управление дебиторской задолженностью

Эта книга – ценный источник советов по грамотному управлению дебиторской задолженностью. С ее помощью вы узнаете все необходимое о кредитной политике предприятия, правилах заключения договора и правилах торговли, организации службы финансовой безопасности фирмы. Рекомендации, приведенные в книге, позволят вам оценить реальный размер дебиторской задолженности, с легкостью разобраться с предприятиями-должниками и, что самое главное, выявить потенциальных должников.Советы по «возврату долгов» основаны на многолетнем практическом опыте автора и представлены в виде сценариев, ориентированных на различные ситуации. Клиенты бывают разными, и зачастую их не выбирают, поэтому для кредитного контролера крайне важно суметь найти подход к каждомуКнига рассчитана на широкий круг читателей – в первую очередь тех, кто вынужден бороться со «злостными неплательщиками».

Светлана Геннадьевна Брунгильд , Сергей Каледин

Карьера, кадры / Юриспруденция / Бухучет и аудит / О бизнесе популярно / Менеджмент / Образование и наука / Финансы и бизнес
Чистый Agile. Основы гибкости
Чистый Agile. Основы гибкости

Прошло почти двадцать лет с тех пор как появился Манифест Agile. Легендарный Роберт Мартин (Дядя Боб) понял, что пора стряхнуть пыль с принципов Agile, и заново рассказать о гибком подходе не только новому поколению программистов, но и специалистам из других отраслей. Автор полюбившихся айтишникам книг «Чистый код», «Идеальный программист», «Чистая архитектура» стоял у истоков Agile. «Чистый Agile» устраняет недопонимание и путаницу, которые за годы существования Agile усложнили его применение по сравнению с изначальным замыслом.По сути Agile — это всего лишь небольшая подборка методов и инструментов, помогающая небольшим командам программистов управлять небольшими проектами,… но приводящая к большим результатам, потому что каждый крупный проект состоит из огромного количества кирпичиков. Пять десятков лет работы с проектами всех мыслимых видов и размеров позволяют Дяде Бобу показать, как на самом деле должен работать Agile.Если вы хотите понять преимущества Agile, не ищите лёгких путей — нужно правильно применять Agile. «Чистый Agile» расскажет, как это делать разработчикам, тестировщикам, руководителям, менеджерам проектов и клиентам.

Роберт Сесил Мартин , Роберт С. Мартин

Программирование, программы, базы данных / Менеджмент / Финансы и бизнес