Menu
Coddy logo textTech

Создание таблиц данных

Часть раздела Логика и потоки выполнения путешествия по R на Coddy. Урок 42 из 64.

Таблица данных — это таблица в R: каждый столбец является вектором собственного типа, и все столбцы имеют одинаковую длину — по одному значению в каждой строке. data.frame() создаёт её из именованных векторов:

people <- data.frame(
  name = c("ada", "bo", "cy"),
  age = c(36, 22, 41),
  city = c("london", "paris", "rome")
)
print(people)

Результат:

  name age   city
1  ada  36 london
2   bo  22  paris
3   cy  41   rome

nrow() и ncol() возвращают размер, а names() перечисляет столбцы. В отличие от матрицы, столбцы могут содержать разные типы данных: в данном случае текст и числа.

people <- data.frame(
  name = c("ada", "bo", "cy"),
  age = c(36, 22, 41),
  city = c("london", "paris", "rome")
)
print(nrow(people))
print(ncol(people))
print(names(people))

Вывод:

[1] 3
[1] 3
[1] "name" "age"  "city"

str() показывает тип и первые значения каждого столбца — это быстрый способ проверить содержимое фрейма данных:

people <- data.frame(
  name = c("ada", "bo", "cy"),
  age = c(36, 22, 41),
  city = c("london", "paris", "rome")
)
str(people)

Результат:

'data.frame':	3 obs. of  3 variables:
 $ name: chr  "ada" "bo" "cy"
 $ age : num  36 22 41
 $ city: chr  "london" "paris" "rome"

Данные часто поступают в виде текста, по одной строке на запись. read.csv(text = lines) превращает такие строки в таблицу данных, используя первую строку как имена столбцов и автоматически преобразуя числа:

lines <- c("item,qty", "tea,2", "jam,5")
orders <- read.csv(text = lines)
print(orders)
print(sum(orders$qty))

Результат:

  item qty
1  tea   2
2  jam   5
[1] 7
challenge icon

Задание

Легко

Завершите table_info(names, ages). Создайте датафрейм со столбцами name и age из двух векторов. Верните три строки: Rows: с количеством строк, Columns: с именами столбцов, объединёнными с помощью , , и Oldest: с именем в строке с наибольшим возрастом (при совпадении возрастов — первое из них).

Предоставленный код считывает имена и возраст как две строки со значениями, разделёнными запятыми, и выводит каждую возвращённую строку.

Попробуйте сами

table_info <- function(names, ages) {
  # Напишите свой код здесь
  character(0)
}

# Предоставленный код ввода/вывода: оставьте его как есть
input <- suppressWarnings(readLines(file("stdin")))
cat(table_info(strsplit(input[1], ",")[[1]], as.numeric(strsplit(input[2], ",")[[1]])), sep = "\n")
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Логика и потоки выполнения

Потренируйтесь самостоятельно: Онлайн-компилятор R