10 Вещей, которые вы можете сделать в R, которые вы сделали бы в Microsoft Excel

10 Вещей, которые вы можете сделать в R, которые вы сделали бы в Microsoft Excel - манекены

Электронная таблица, вероятно, является одним из наиболее широко используемых приложений для ПК - и по уважительной причине: электронные таблицы упрощают выполнение расчетов и других операций в табличных данные. Но таблицы также представляют некоторые риски: их легко коррумпировать и очень сложно отлаживать. Хорошая новость заключается в том, что вы можете использовать R для выполнения многих из тех вещей, которые вы делали в электронных таблицах.

Добавление итогов строк и столбцов

Одной задачей, которую вы часто можете делать в электронной таблице, является вычисление итогов строк или столбцов. Самый простой способ сделать это - использовать функции rowSums () и colSums (). Аналогично, для вычисления средств используйте rowMeans () и colMeans ().

Попробуйте его на встроенной диафрагме набора данных. Сначала удалите пятый столбец, потому что он содержит текст, описывающий виды радужной оболочки: >> радужная оболочка. num <- iris [ -5]

 Затем вычислите сумму и значение для каждого столбца: 

>> colSums (iris. Num)> colMeans (iris. Num)

Эти две функции очень удобны, но вы можете рассчитать другую статистику для каждого столбца или строки. Существует простой способ перемещения строк или столбцов массива или фрейма данных: функция apply (). Например, получение минимума столбца такое же, как применение функции min () ко второму измерению ваших данных: >> apply (iris. Num, 2, min)> apply (iris. Num, 2, max)
 Номера форматирования 

 Вы можете использовать format (), чтобы превратить ваши цифры в текст, готовый для печати. Эта функция принимает несколько аргументов для управления форматом вашего результата. Вот несколько примеров: 

trim

:

Логическое значение. Если FALSE, он добавляет пробелы для выравнивания результата вправо. Если TRUE, он подавляет ведущие пробелы.

  • цифры : Сколько значащих цифр числовых значений для отображения.

  • nsmall : Минимальное количество цифр после десятичной точки.

  • Кроме того, вы определяете формат десятичной точки с десятичной запятой. mark, метка между интервалами до десятичная точка с большим. метки и метки между интервалами

после десятичной точки с малой. отметка. Например, вы можете напечатать номер 12345. 6789 с запятой в виде десятичной точки, пробелы как большой знак и точки в виде небольшой метки: формат >> (12345, 6789, цифры = 9, десятичный. mark = ",", + large. mark = "", small. mark = ".", small. interval = 3) [1] "12 345, 678. 9" В качестве более практического примера, чтобы вычислить средства некоторых столбцов в mtcars, а затем распечатать результаты с двумя цифрами после десятичной точки, используйте следующее: >> x format (x, digits = 2, nsmall = 2) mpg cyl disp hp "20.09 "" 6. 19 "" 230. 72 "" 146. 69 " Обратите внимание, что результат больше не является числом, а текстовой. Поэтому будьте осторожны при использовании форматирования чисел - это должен быть последний шаг в вашем рабочем процессе отчетности.

Если вы знакомы с программированием на языках, подобных C или C ++, вы также можете найти функцию sprintf () полезной. Эта оболочка позволяет вставлять форматированный номер непосредственно в строку.

 Вот пример преобразования чисел в проценты:  >> x sprintf ("%. 1f %%", 100 * x) [1] "50. 0% "" 51. 0% "" 52. 0% "" 53. 0% "" 54. 0% "" 55. 0% "

Это то, что он делает: первый аргумент sprintf () указывает формат - в этом случае -%. 1f %% ". Аргумент format использует специальные литералы, которые указывают, что функция должна заменить этот литерал переменной и применить некоторое форматирование. Литералы всегда начинаются с символа%. Итак, в этом случае%. 1f означает форматирование первого поставленного значения в виде значения фиксированной точки с одной цифрой после десятичной точки, а %% - буква, означающего печать%.

 Чтобы отформатировать некоторые цифры в качестве валюты - в этом случае доллары США - используйте:  >> set. (1)> x sprintf ("$% 3. 2f", x) [1] "$ 265. 51" "$ 372. 12" "$ 572. 85" "$ 908. 21" "$ 201. 68 "

Функция sprintf () предоставляет альтернативный способ вставки значения любой переменной в строку: >> stuff price sprintf ("% s cost $% 3.. 2f ", материал, цена) [1 ] «Хлеб стоит $ 2. 10» «cookie» стоимостью $ 4.00 »

Что происходит здесь, так как вы предоставили два вектора (каждый с двумя элементами) в sprintf (), ваш результат - это вектор с двумя элементами , R циклически проходит через элементы и помещает их в литералы sprintf ().

Вы можете сделать все с помощью функций paste () и format (), которые вы можете сделать с помощью sprintf (), поэтому вам никогда не понадобится его использовать. Но когда вы это сделаете, это упростит ваш код.

 Сортировка данных 

Для сортировки данных в R используются функции sort () или order ().

Чтобы отсортировать mtcars фрейма данных в порядке возрастания или уменьшения столбца hp, используйте: >> с (mtcars, mtcars [order (hp),])> with (mtcars, mtcars [order (hp, убывающий = TRUE),])

 Выбор вариантов, если 

Таблицы дают вам возможность выполнять все виды «Что делать? Анализы. Один из способов сделать это - использовать функцию if () в электронной таблице.

 R также имеет функцию if (), но в основном используется для управления потоком в ваших сценариях. Поскольку вы обычно хотите выполнить вычисление по целому вектору в R, обычно более целесообразно использовать функцию ifelse (). 

Вот пример использования ifelse () для идентификации автомобилей с высокой топливной экономичностью в массивах данных: >> mtcars <- transform (mtcars, + mpgClass = ifelse (mpg mtcars [mtcars $ mpgClass == "High" ,]

Вычисление условных итогов

Что-то еще, что вы, вероятно, много сделали в Excel, вычисляет условные суммы и подсчеты с функциями sumif () и countif ().

Вы можете сделать то же самое в одном из два пути в R:

Используйте ifelse.

 Просто рассчитайте интересующую вас меру подмножества ваших данных. 

Предположим, вы хотите рассчитать условное среднее значение топливной эффективности в mtcars. Вы делаете это со средней функцией (). Теперь, чтобы получить топливную экономичность для автомобилей с обеих сторон порога 150 лошадиных сил, попробуйте следующее: >> с (mtcars, mean (mpg)) [1] 20. 09062> с (mtcars, mean (mpg [ hp с (mtcars, mean (mpg [hp> = 150])) [1] 15. 40667

Подсчет количества элементов в векторе совпадает с запросом о его длине. Это означает, что функция count count Excel ( ) имеет эквивалент R по длине (): >> с (mtcars, length (mpg [hp> 150])) [1] 13

Транспонирование столбцов или строк

Иногда вам нужно транспонировать свои данные из строки в столбцы или наоборот. В R функция транспонирования матрицы равна t (): >> xx [ 1] [ 2] [ 3] [1,] 1 5 9 [2,] 2 6 10 [3,] 3 7 11 [4,] 4 8 12

 Чтобы получить транспонирование матрицы, используйте t ():  >> t (x) [ 1] [ 2] [ 3] [ 4] [1,] 1 2 3 4 [2,] 5 6 7 8 [3,] 9 10 11 12 

Вы также можете использовать t () для переноса фреймов данных, но будьте осторожны, когда вы сделайте это. Результат транспозиции всегда является матрицей (или массивом). Поскольку массивы всегда имеют только один тип переменной, например числовой или символ, переменные типы ваших результатов могут быть не такими, какие вы ожидаете.

Поиск уникальных или дублированных значений

Чтобы идентифицировать все уникальные значения в ваших данных, используйте функцию unique (). Попробуйте найти уникальные значения количества цилиндров в mtcars: >> unique (mtcars $ cyl) [1] 6 4 8

  • Иногда вам нужно знать, какие значения ваших данных дублируются. В зависимости от вашей ситуации эти дубликаты будут действительны, но иногда дубликаты записей могут указывать на проблемы с вводом данных.

  • Функция для идентификации повторяющихся записей дублируется (). Во встроенном диалоговом окне набора данных есть строка с дублированием строки 143. Попробуйте сами: >> dupes head (dupes) [1] FALSE FALSE FALSE FALSE FALSE FALSE>, который (обманывает) [1] 143> iris [dupes,] Sepal. Длина Sepal. Ширина лепестка. Длина лепестка. Ширина видов 143 5. 8 2. 7 5. 1 1. 9 virginica

Поскольку результат duplicated () является логическим вектором, вы можете использовать его как индекс для удаления строк из ваших данных. Для этого используйте оператор отрицания - восклицательный знак (как и в!): >> iris [! dupes,]> nrow (iris [! dupes,]) [1] 149

 Работа с поисковыми таблицами 

В приложении электронной таблицы, например Excel, вы можете создавать таблицы поиска с функциями vlookup или комбинацией индекса и соответствия ,

 В R может быть удобно использовать merge () или match (). Функция match () возвращает вектор с позициями элементов, которые соответствуют вашему поисковому значению. 

Например, чтобы найти местоположение элемента «Toyota Corolla» в именах строк mtcars, попробуйте следующее: >> индексный индекс [1] 20> mtcars [index, 1: 4] mpg cyl disp hp Toyota Corolla 33. 9 4 71. 1 65

Работа со сводными таблицами

 Для простых таблиц в R вы можете использовать функцию tapply () для достижения аналогичных результатов для сводных таблиц в Excel.Вот пример использования tapply () для вычисления среднего hp для автомобилей с различным количеством цилиндров и шестерен:  >> с (mtcars, tapply (hp, list (cyl, gear), mean)) 3 4 5 4 97. 0000 76. 0 102. 0 6 107. 5000 116. 5 175. 0 8 194. 1667 NA 299. 5 

Для немного более сложных таблиц, то есть таблиц с более чем двумя факторами кросс-классификации, используйте совокупность (): >> агрегат (hp ~ cyl + gear + am, mtcars, mean) cyl gear am hp 1 4 3 0 97. 00000 2 6 3 0 107. 50000 3 8 3 0 194. 16667 4 4 4 0 78. 50000 5 6 4 0 123. 00000 6 4 4 1 75. 16667 7 6 4 1 110. 00000 8 4 5 1 102. 00000 9 6 5 1 175. 00000 10 8 5 1 299. 50000

 Использование поиск и решатель цели 

В R функция optimize () предоставляет один довольно простой механизм оптимизации функций.

Представьте, что вы директор по продажам компании, и вам нужно установить лучшую цену для вашего продукта. Другими словами, найдите цену продукта, который максимизирует доход.

В экономике простая модель ценообразования утверждает, что люди покупают меньше определенного продукта, когда цена увеличивается. Вот очень простая функция, которая имеет такое поведение: >> sales <- function (price) {100 - 0. 5 * price}

 Ожидаемый доход - это просто продукт цены и ожидаемых продаж:  >> доход <- функция (цена) {цена * продажа (цена)} 

Вы можете использовать функцию curve () для построения непрерывных функций. Это принимает функцию в качестве входных данных и создает график. Попробуйте построить поведение продаж и выручки с помощью функции curve (), варьирующейся цены от $ 50 до $ 150: >> oldpar curve (sales, from = 50, to = 150, xname = "price", main = "Sales ")> Кривая (доход, от = 50, до = 150, xname =" цена ", main =" Доход ")> par (oldpar)

Ваши результаты должны выглядеть примерно так.

 Модель ожидаемых продаж и доходов. 

У вас есть рабочая модель продаж и доходов. Вы сразу видите, что есть точка максимального дохода. Затем используйте функцию оптимизации R (), чтобы найти значение этого максимума. Чтобы использовать optimize (), вам нужно указать, какую функцию использовать (в данном случае, доход ()), а также интервал (в данном случае - цены от 50 до 150). По умолчанию optimize () ищет минимальное значение, поэтому в этом случае вы должны указать ему для поиска максимального значения: >> optimize (доход, интервал = c (50, 150), максимум = TRUE) $ maximum [1] 100 $ цель [1] 5000

 И вот вы идете. Зарядите цену в 100 долларов и ожидайте получить 5 000 долларов дохода.