Дорожня карта

Питання
  • Як я можу маніпулювати фреймом даних?

даних

цілі
  • Вмійте додавати та видаляти рядки та стовпці.

  • Умійте видаляти рядки зі значеннями NA .

  • Вмійте додавати два кадри даних.

  • Вмійте чітко сформулювати, що таке фактор і як перетворити фактор на характер .

  • Вміти розуміти основні властивості кадру даних, включаючи розмір, клас або тип стовпців, імена та перші рядки.

На даний момент ви бачили основні типи даних R і структури, і все, що ви робите, буде маніпуляцією з цими інструментами. Зараз ми збираємось навчитися чомусь другому щодо роботи з класом кадру даних (структурою даних, якою ви будете користуватися більшу частину часу і яка буде зіркою шоу). Фрейм даних - це таблиця, яку ми створюємо під час завантаження інформації з CSV-файлу.

Ключові слова

Команда: Переклад

nrow: кількість рядків

ncol: кількість стовпців

rbind: об'єднати рядки

cbind: об'єднати стовпці

Додавання стовпців і рядків до кадру даних

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

Потім ми можемо додати його як стовпець за допомогою:

Зверніть увагу, що це не вдасться, якщо ми спробуємо додати вектор із різною кількістю входів, ніж кількість рядків у кадрі даних.

Тому що я не працював? Звичайно, R хоче бачити елемент у нашому новому стовпці для кожного рядка таблиці:

Щоб це працювало, ми повинні мати nrow (кішки) = довжина (вік). Ми збираємось перезаписати вміст котів за допомогою нашого нового кадру даних.

А як щодо додавання рядків, у цьому випадку, востаннє ми бачили, що рядки кадру даних складаються зі списків:

Що означає помилка, вказана R? „Недійсний рівень фактора” говорить нам щось про фактори ... але що таке фактор? Фактор - це тип даних у R. Фактор - це категорія (наприклад, колір), з якою R може виконувати певні операції. Наприклад:

Порядок факторів також може бути переставлений.

Фактори

Об'єкти класу факторів - це інший тип даних, яким ми повинні користуватися з обережністю. Коли R створює коефіцієнт, він допускає лише ті значення, які спочатку були там, коли ми завантажували дані. Наприклад, у нашому випадку 'чорний', 'кориця' та 'тигрова'. Будь-яка нова категорія, яка не входить до цих категорій, буде відхилена (і стане НС).

Попередження (Warning) каже нам додати "черепаховий панцир" до нашого кольорового фактора. Але інші значення, 3.3 (для числового типу), TRUE (для логічного типу) та 9 (для числового типу), були успішно додані до ваги, типу_строки та віку, відповідно, оскільки ці значення не є фактором типу. Щоб додати нову категорію «черепахова черепашка» до кадру даних котів у кольоровому стовпці, ми повинні чітко додати «черепахову шкаралупу» як новий рівень (рівень) у факторі:

Крім того, ми можемо змінити стовпець на символ типу. У цьому випадку ми втрачаємо категорії, але відтепер ми можемо додавати будь-яке слово до стовпця, без проблем із рівнями коефіцієнтів.

Завдання 1

Уявімо, що, як і собаки, 1 рік людини еквівалентний 7 рокам у котів (компанія Purina використовує більш досконалий алгоритм).

  1. Створіть вектор із назвою human.age, помноживши вік котів на 7.
  2. Перетворити вік людини на фактор.
  3. Перетворіть вік людини назад у числовий вектор, використовуючи функцію as.numeric (). Тепер поділіть на 7, щоб повернутися до початкових віків. Поясніть, що сталося.

Рішення виклику 1

  1. вік людини
  2. human.age або as.factor (human.age) два варіанти працюють однаково добре.
  3. as.numeric (human.age) видає 1 2 3 4 4, оскільки фактори зберігаються як цілі об'єкти (1: 4), кожен з яких має відповідну мітку мітки (28, 35, 56 і 63). Перетворення об'єкта з одного типу даних на інший, наприклад з фактору в числовий, дає нам цілі числа, а не мітки. Якщо ми хочемо оригінальні числа, нам потрібен проміжний крок, нам потрібно перетворити human.age у тип символу, а потім у числовий (як це працює?). Це з’являється в реальному житті, коли ми випадково включаємо символ у стовпець нашого файлу .csv, який мав містити лише цифри. У нас буде ця проблема, якщо при читанні файлу ми забудемо включити stringsAsFactors = FALSE .

Видалення рядків

Тепер ми знаємо, як додати рядки та стовпці до нашого кадру даних у R, але в нашій першій спробі додати кота під назвою ‘черепахова черепашка’ ми додаємо рядок, який не працює.

Ми можемо запитати фрейм даних без помилкового рядка:

Зверніть увагу, що -4 означає, що ми хочемо видалити четвертий рядок, кома без нічого за нею вказує, що це стосується всіх стовпців. Ми могли б видалити обидва рядки в одному дзвінку, використовуючи обидва числа у векторі: cats [c (-4, -5),]

Крім того, ми можемо видалити рядки, що містять значення NA:

Давайте перепризначимо новий вихідний результат у фрейм даних cat, тому наші зміни будуть постійними:

Видалення стовпців

Ми також можемо видаляти стовпці у фреймі даних. Видалити стовпець можна двома способами: за номером або назвою індексу.

Зверніть увагу на кому, перед яким нічого немає, що вказує на те, що ми хочемо зберегти всі рядки.

Крім того, ми можемо скинути стовпець, використовуючи ім’я індексу.

Додавання рядків або стовпців до кадру даних

Ключ, який слід пам’ятати при додаванні даних у фрейм даних, полягає в тому, що стовпці - це вектори або фактори, а рядки - списки. Ми можемо вставити два кадри даних за допомогою rbind, що означає приєднання рядків (вертикально):

Але тепер імена рядків імена рядків ускладнені. Ми можемо їх видалити, і R буде називати їх знову, послідовно:

Виклик 2

Ви можете створити новий фрейм даних із R із таким синтаксисом:

Створіть фрейм даних, який містить наступну особисту інформацію:

  • Ім'я
  • прізвище
  • улюблений номер

Потім використовуйте rbind, щоб додати запис для людей, які сидять навколо вас. Нарешті, використовуйте cbind, щоб додати стовпець із пробілом для кожної людини, щоб відповісти на таке запитання: "Чи настав час перерви?"

Рішення виклику 2

Реалістичний приклад

Дотепер ми бачили основні маніпуляції, які можна зробити на фреймі даних. Тепер давайте розширимо ці навички на більш реалістичному прикладі. Ми збираємось імпортувати gapminder набір даних що ми раніше завантажили:

Функція read.table використовується для читання табличних даних, які зберігаються у текстовому файлі, де стовпці даних розділені знаком пунктуації, як у файлах CSV (де csv є значення, розділені комами англійською мовою, тобто значення, розділені комами).

Найчастіше використовувані розділові знаки для відокремлення або обмеження даних у текстових файлах - це вкладки та коми. Для зручності R пропонує дві версії функції read.table. Ці версії: read.csv для файлів, де дані відокремлюються комами, і read.delim для файлів, де дані відокремлюються вкладками. З усіх трьох варіантів найчастіше використовується read.csv. При необхідності можна замінити розділовий знак, який використовується за замовчуванням для обох функцій: read.csv і read.delim .

Інші поради

  • Інший тип файлу, який ви можете знайти, - це розділена вкладками (.tsv). Щоб вказати цей роздільник, використовуйте "\ t" або read.delim () .

  • Файли можна завантажити з Інтернету в локальну папку за допомогою download.file. Функцію read.csv можна виконати для читання завантаженого файлу, наприклад:

  • Крім того, ви можете читати файли безпосередньо в R, використовуючи веб-адресу та read.csv. Важливо зазначити, що якщо це буде зроблено, локальної копії файлу csv на вашому комп’ютері не буде. Наприклад,
  • Ви можете безпосередньо читати електронні таблиці Excel, не перетворюючи їх у звичайний текст, використовуючи пакет readxl.

Давайте трохи дослідимо Gapminder; Перше, що потрібно завжди зробити, це побачити, як виглядає набір даних, використовуючи str:

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