Списки та таблиці даних

Краще вже прочитати главу Вектори, індексація та призначення, перш ніж вирішувати цю.

списки

Цей розділ висвітлений в webin-R # 02 (основи мови R) на YouTube.

Списки

За своєю природою вектори можуть містити лише значення одного типу (числові, текстові чи логічні). Однак нам може знадобитися представити більш складні об'єкти, що складаються з різнорідних елементів. Це те, що дозволяє .

Властивості та створення

Список просто створюється за допомогою функції списку:

Список - це сукупність об’єктів, якими б вони не були, кожен елемент списку може мати свої власні розміри. У нашому попередньому прикладі ми створили список l1, який складається з двох елементів: вектора цілих чисел довжиною 5 та текстового вектора довжини 1. Довжина списку відповідає кількості елементів, які він містить, і s 'отримує з довжиною:

Як і вектори, список може бути названий, а імена елементів списку доступні з іменами:

Що станеться зараз, якщо ми виконаємо таку команду ?

Як довго, на вашу думку, цей новий список l? 5 ?

Ну ні! Він довжиною 2, оскільки ми створили список, який складається з двох елементів, які самі є списками. Це стає більш читабельним, якщо ми використовуємо функцію str, яка дозволяє візуалізувати структуру об'єкта.

Список може містити всі типи об’єктів, включаючи інші списки. Щоб об'єднати елементи списку, потрібно скористатися функцією додавання:

Побіжно можна зазначити, що список цілком може бути названий лише частково.

Індексація

Поодинокі дужки ([]) працюють як вектори. Ви можете використовувати і ',' і '.

Навіть якщо ми виділяємо один елемент, витяг, отриманий за допомогою окремих дужок, завжди повертає список, що складається тут з одного елемента:

Припустимо, я хочу обчислити середнє значення першого елемента у моєму списку. Спробуємо наступну команду:

Ми отримуємо повідомлення про помилку. Справді, Р. не може обчислити середнє значення зі списку. Для цього потрібен вектор числових значень. Іншими словами, те, що ми шукаємо, - це фактичний зміст першого пункту у нашому списку, а не жодного списку.

Тут почнуть діяти подвійні дужки ([[]]). Для останнього ми можемо використовувати індексацію за позицією або індексування за іменем, але не індексацію за умовою. Крім того, критерій, який буде зазначено, повинен вказувати один і лише один елемент нашого списку. Замість повернення списку з елементом подвійні дужки повернуть призначений елемент. Швидко, приклад:

Тепер ми можемо розрахувати наше середнє:

Ми також можемо перевірити індексацію за іменами.

Але треба визнати, що це написання з подвійними дужками та цитатами є дещо важким. На щастя, на сцену виходить новий гравець: символ долара ($). Це скорочення для подвійних дужок для індексації за іменем і використовується так:

Записи l $ month та l [["month"]] еквівалентні. Увага ! Це працює лише для індексації за іменами.

Також працює з подвійними дужками або знаком долара:

Таблиці даних

Існує один тип об’єкта, про який ми вже говорили в Першій роботі з даними, це англійською мовою.

Властивості та створення

В Р., масиви даних - це просто списки з декількома конкретними властивостями:

  • таблиці даних можуть містити лише вектори;
  • всі вектори в таблиці даних мають однакову довжину;
  • всі елементи таблиці даних іменовані, і кожен має унікальну назву.

Отже, таблиця даних відповідає файлам даних, які ми звикли обробляти в інших статистичних програмах, таких як або Статистика. Змінні впорядковані в стовпці, а спостереження - у рядки.

Ми можемо створити таблицю даних за допомогою функції data.frame:

Функція data.frame має великий недолік: якщо ми не деактивуємо опцію stringsAsFactors, вона перетворює рядки, тут змінна статі перетворюється на фактори (тип вектора, який ми детальніше обговоримо у наступній главі).

Оскільки масив даних - це список, функція length поверне кількість елементів у списку, тому в цьому випадку кількість змінних і називає їх імена:

Оскільки всі елементи масиву даних мають однакову довжину, цей об’єкт можна розглядати як двовимірний. Функції nrow, ncol і dim дають відповідно кількість рядків, кількість стовпців і розміри нашого масиву.

Більше того, подібно до того, як стовпці мають ім'я, можна також називати рядки рядками.

Індексація

Оскільки масиви даних є списками, ми можемо використовувати одинарні дужки ([]), подвійні дужки ([[]])) і знак долара ($) для вилучення частин нашого масиву так само, як і для будь-якого списку.

Однак, оскільки таблиця даних є двовимірним об'єктом, можна також отримати дані з двох вимірів, а саме перший критерій, що стосується рядків, а другий, що стосується стовпців. Для цього ми будемо використовувати одинарні дужки ([]), розділяючи наші два критерії комою (,).

Перший приклад:

Ця перша команда вказує на те, що нам потрібен третій рядок другого стовпця - вік Майкла. Такого ж результату можна досягти за допомогою індексування за іменем, індексації за умовою або сумішшю всіх перерахованих.

Також можна вказати єдиний критерій. Наприклад, якщо я хочу перші два спостереження або змінні статі та блондинки:

Досить було залишити порожній простір перед комою або після неї. УВАГА ! Однак обов’язково залишати кому для позначення Р. потрібно виконати двовимірне індексування. Якщо ми забули кому, це поверне нас до способу роботи списків. І результат необов’язково однаковий:

Мимохідь ми можемо відзначити деякі тонкощі поверненого результату.

df [2,] означає, що ми хочемо всі змінні для другого індивіда. У результаті виходить однорядна таблиця даних із трьох стовпців. df [2] - це спосіб вилучення списків і, отже, повертає одноелементний список, у цьому випадку масив даних із чотирма спостереженнями та однією змінною. df [[2]] для нього повертає вміст цієї змінної, тобто числовий вектор довжиною чотири. Залишок df [, 2], який повертає всі спостереження для другої колонки. Однак операція є дещо особливою: за замовчуванням вона повертає масив даних, але якщо у вилученні є лише одна змінна, повертається вектор. Детальніше див. У довідці для [.data.frame .

Показати дані

Візьмемо дещо більшу таблицю даних, в даному випадку набір даних, доступний в анкеті розширення та відповідає витягу з опитування Histoire de vie, проведеного INSEE у 2003 році. Він містить 2000 осіб та 20 змінних.

Якщо ми просимо відобразити об’єкт d у консолі (результат тут не відтворюється), Р. відображатиме весь вміст d на екрані, що на таблиці такого розміру буде не дуже читабельним. Для візуального дослідження найпростіший спосіб - часто використовувати інтегрований RStudio і це можна викликати за допомогою функції Перегляд .

Функції head і tail, які також працюють над векторами, дозволяють відображати лише перші (відповідно останні) рядки таблиці даних:

Розширення dplyr, яке ми не будемо детально обговорювати пізніше, пропонує функцію прогляду (що означає попередній перегляд англійською мовою), що дозволяє швидко та стиснути вміст таблиці даних.

Позначене розширення пропонує функцію look_for, яка дозволяє перерахувати різні змінні файлу даних:

Коли у вас велика таблиця даних із великою кількістю змінних, може бути важко знайти цікаві змінні. Можна обмежити пошук ключовим словом look_for, щоб обмежити пошук. Наприклад:

Зверніть увагу, що, хоча пошук не чутливий до регістру (тобто великі та малі регістри), він чутливий до наголосу.

Зведений метод, який працює на будь-якому типі об'єкта, надає деякі основні статистичні дані про різні змінні в нашій таблиці, статистичні дані відображаються залежно від типу змінної.

Ми також можемо застосувати зведення до певної змінної.

Розширення questionr також надає корисну функцію для опису різних змінних у таблиці даних. Це стосується опису. Давайте проведемо тест:

Як видно з цього прикладу, опис відображає тип змінних, перші значення кожної, кількість відсутніх значень, кількість різних (унікальних) значень, а також деяку іншу інформацію залежно від типу змінних.

Можна обмежити показ лише кількома змінними, вказавши назву останньої.

Ми також можемо передати лише одну змінну:

Підсумовуючи

Списки

  • Списки - це одновимірні об’єкти, які можуть містити об’єкти будь-якого типу, включаючи інші списки.
  • Вони мають довжину, яку ми отримуємо з довжиною .
  • Ми створюємо список зі списком і можемо об'єднати списки з додаванням .
  • Як і вектори, списки можна називати, а імена елементів отримувати з іменами .
  • Поодинокі дужки ([]) дозволяють вибирати елементи у списку, використовуючи індексацію за позицією, індексування за іменем або індексування за умовою. Це завжди повертає інший список.
  • Подвійні дужки ([[]]) безпосередньо повертають вміст елемента у списку, який ми вибрали за позицією або за назвою.
  • Символ $ - це ярлик для легкого вибору елемента за назвою, список $ name еквівалентний списку [["name"]] .

Таблиці даних

  • Таблиці даних - це списки зі спеціальними властивостями:
    1. всі елементи є векторами;
    2. всі вектори мають однакову довжину;
    3. всі вектори мають ім’я, і це ім’я унікальне.
  • Ми можемо створити таблицю даних за допомогою data.frame .
  • Таблиці даних відповідають файлам даних, які зазвичай використовуються в іншому статистичному програмному забезпеченні: змінні відображаються у стовпцях, а спостереження - у рядках.
  • Вони є двовимірними об'єктами: ncol повертає кількість стовпців і зменшує кількість рядків.
  • Подвійні дужки ([[]]) та знак долара ($) працюють як списки та дозволяють доступ до змінних.
  • Можна використовувати двовимірні координати з одинарними дужками ([]), вказуючи критерій на рядках, а потім критерій на стовпцях, розділених комою (,).

Вміст, ліцензований за ліцензією Creative Commons Attribution-NonCommercial-ShareAlike.
Працює на R, RStudio, R Markdown, knitr, pandoc та Prince XML. Хостинг GitHub.