В данной категории собраны несколько специфические функции для работы с упорядоченными данными. Не зря категория включает в себя упоминание про базы данных: таблицы для работы этих функций должны отвечать определенным требованиям:
- таблица должна обязательно содержать заголовки столбцов. Эти заголовки должны располагаться строго в одной строке, не должны содержать объединенных и пустых ячеек.
- таблица должна быть неделимая, т.е. не должна содержать полностью пустых строк и столбцов, а так же объединенных ячеек
- в каждом столбце должна содержаться однотипная информация: если в столбце должны содержаться даты, значит кроме дат там не должно быть ничего другого; если в столбце числа(суммы, кол-во) - значит должны быть только числа. Не следует при отсутствии чисел оставлять ячейку пустой или ставить пробел. Вместо этого необходимо ставить 0.
Для разбора функции баз данных возьмем следующий пример таблицы:
Данная таблица отвечает всем требованиям для работы с функциями баз данных, однако, чтобы более удобно и гибко работать с функциями баз данных лучше сместить таблицу данных на несколько строк вниз, а выше добавить таблицу критериев, где будут формироваться условия отбора данных из основной таблицы:
Именно для этой таблицы будут приведены все примеры описаний функций. И критерии заданы следующие: отбирать из поля "Дерево" Яблони с высотой больше 3 и меньше 6 и Вишни, со значением в поле "Возраст" больше 8. Если посмотреть на таблицу данных(из которой будут отбираться данные и производится расчеты функциями), то этим критериям отвечают только две строки: строки 9 и 10 листа.
Как видно, в качестве критериев можно указывать выражение в виде: >6 , 0 (не равно нулю), >=7 , "Яблоня" .
Все функции из категории баз данных имеют три одинаковых аргумента:
Функция(база_данных; поле; критерий)
база_данных
- ссылка на ячейки данных таблицы, включая заголовок(A6:E12).
поле
- в данном аргументе можно записать как непосредственно текст с названием столбца в кавычках ("Дерево", "Возраст" или "Урожай"), так и число, задающее положение столбца в таблице: 1 - для первого поля(столбца) в таблице "Дерево", 2 - для второго поля "Высота", 3 - для третьего поля "Возраст" и так далее.
критерий
- ссылка на диапазон ячеек с условиями отбора(A1:F3). Функция отберет данные из таблицы, которые удовлетворяют условиям, указанным в ячейках критериев. В ссылке на критерии обязательно должны быть включены названия столбцов, для которых выполняется отбор данных.
- ДСРЗНАЧ (DAVERAGE)
- Вычисляет среднее значение выбранных записей базы данных:
=ДСРЗНАЧ(A6:E12 ;5; A1:F3)
=ДСРЗНАЧ(A6:E12 ;"Прибыль"; A1:F3)
=DAVERAGE(A6:E12 ,5, A1:F3) вернет значение 90 000р. , т.к. сумма прибыли отобранных записей равна 180 000р., а всего отобрано 2 записи. 180 000/2 = 90 000 . - БСЧЁТ (DCOUNT)
- Подсчитывает количество числовых ячеек в базе данных:
=БСЧЁТ(A6:E12 ;5; A1:F3)
=БСЧЁТ(A6:E12 ;"Прибыль"; A1:F3)
=DCOUNT(A6:E12 ,5, A1:F3) вернет число 2 , т.к. только две строки в таблице отвечают критериям - БСЧЁТА (DCOUNTA)
- Подсчитывает количество непустых ячеек в базе данных:
=БСЧЁТА(A6:E12 ;4; A1:F3)
=БСЧЁТА(A6:E12 ;"Прибыль"; A1:F3)
=DCOUNTA(A6:E12 ,4, A1:F3) вернет 2, т.е. подсчитает в отвечающих критериям строках количество непустых ячеек в столбце "Прибыль" - БИЗВЛЕЧЬ (DGET)
- Извлекает из базы данных одну запись, удовлетворяющую заданному условию:
=БИЗВЛЕЧЬ(A6:E12 ;5; A1:F3)
=БИЗВЛЕЧЬ(A6:E12 ;"Прибыль"; A1:F3)
=DGET(A6:E12 ,5, A1:F3) для заданных условий вернет значение ошибки #ЧИСЛО! (#NUM!) , т.к. этим условиям отвечает более одной записи. Если же указать диапазон для критерия как:
=БИЗВЛЕЧЬ(A6:E12 ;5; A1:F2) то функция вернет значение 75 000р. , т.е. единственную запись о прибыли для Яблонь с высотой больше 3 и меньше 6 (в данный промежуток попадает лишь строка 10 - Яблона, высота 5) - ДМАКС (DMAX)
- Находит максимальное значение среди выделенных записей базы данных:
=ДМАКС(A6:E12 ;5; A1:F3)
=ДМАКС(A6:E12 ;"Прибыль"; A1:F3)
=DMAX(A6:E12 ,5, A1:F3) вернет сумму 105 000р. , т.к. это максимальная прибыль из всех отвечающих критериям строк. - ДМИН (DMIN)
- Находит минимальное значение среди выделенных записей базы данных:
=ДМИН(A6:E12 ;5; A1:F3)
=ДМИН(A6:E12 ;"Прибыль"; A1:F3)
=DMIN(A6:E12 ,5, A1:F3) вернет сумму 75 000р. , т.к. это минимальная прибыль из всех строк, отвечающих критериям - БДПРОИЗВЕД (DPRODUCT)
- Перемножает значения определенного поля в записях базы данных, удовлетворяющих условию:
=БДПРОИЗВЕД(A6:E12 ;3; A1:F3)
=БДПРОИЗВЕД(A6:E12 ;"Возраст"; A1:F3)
=DPRODUCT(A6:E12 ,3, A1:F3) вернет 210 , т.к. будут перемножены все значения столбца "Возраст", отвечающие критериям(14*15=210) - ДСТАНДОТКЛ (DSTDEV)
- Оценивает стандартное отклонение по выборке из выделенных записей базы данных:
=ДСТАНДОТКЛ(A6:E12 ;4; A1:F3)
=ДСТАНДОТКЛ(A6:E12 ;"Урожайность"; A1:F3)
=DSTDEV(A6:E12 ,4, A1:F3) вернет 0,707107 , т.е. оценку стандартного отклонения урожайности по указанным критериям. - ДСТАНДОТКЛП (DSTDEVP)
- Вычисляет стандартное отклонение по генеральной совокупности из выделенных записей базы данных:
=ДСТАНДОТКЛП(A6:E12 ;4; A1:F3)
=ДСТАНДОТКЛП(A6:E12 ;"Урожайность"; A1:F3)
=DSTDEVP(A6:E12 ,4, A1:F3) вернет 0,5 , т.е. точное стандартное отклонение урожайности по указанным критериям, если считать, что данные в базе данных описывают генеральную совокупность всех деревьев в саду. - БДСУММ (DSUM)
- Суммирует числа в поле для записей базы данных, удовлетворяющих условию:
=БДСУММ(A6:E12 ;5; A1:F3)
=БДСУММ(A6:E12 ;"Прибыль"; A1:F3)
=DSUM(A6:E12 ,5, A1:F3) вернет сумму прибыли всех строк, отвечающих критериям, т.е. 180 000р.
=БДСУММ(A6:E12 ;5; A1:A2)
=DSUM(A6:E12 ,5, A1:A2) вернет сумму прибыли от всех Яблонь, т.е. 225 000р. - БДДИСП (DVAR)
- Оценивает дисперсию по выборке из выделенных записей базы данных:
=БДДИСП(A6:E12 ;4; A1:A2)
=БДДИСП(A6:E12 ;"Урожайность"; A1:A2)
=DVAR(A6:E12 ,4, A1:A2) вернет 0,5 , что будет оценкой дисперсии урожайности по указанным критериям, если считать, что данные в таблице являются выборкой из генеральной совокупности всех деревьев в саду - БДДИСПП (DVARP)
- Вычисляет дисперсию по генеральной совокупности из выделенных записей базы данных:
=БДДИСПП(A6:E12 ;4; A1:A2)
=БДДИСПП(A6:E12 ;"Урожайность"; A1:A2)
=DVARP(A6:E12 ,4, A1:A2) вернет 10,66667 , т.е. точную дисперсию урожайности Яблонь и Вишень, если считать, что данные в базе данных описывают генеральную совокупность всех деревьев в саду
Функции в программе Excel позволяют выполнять различные, довольно сложные действия вычислительного характера буквально в несколько кликов. Ещё больше упрощает работу с ними такой удобный инструмент, как «Мастер функций» . Давайте рассмотрим, как он устроен и что с его помощью можно делать.
Мастер функций представляет собой инструмент в виде небольшого окошка, в котором все имеющиеся функции в Excel упорядочены по категориям, что делает доступ к ним проще. Также, он предоставляет возможность ввести аргументы формулы через интуитивно понятный графический интерфейс.
Переход в Мастер функций
Мастер функций можно запустить сразу несколькими способами. Но прежде, чем активировать этот инструмент, нужно выделить ту ячейку, в которой будет находиться формула и, следовательно, выводиться результат.
Проще всего перейти в него, нажав на кнопку «Вставить функцию» , расположенную слева от строки формул. Этот способ хорош тем, что им воспользоваться можно, находясь в любой вкладке программы.
Кроме того, нужный нам инструмент можно запустить, перейдя во вкладку «Формулы» . Затем следует нажать на самую крайнюю слева кнопку на ленте «Вставить функцию» . Она располагается в блоке инструментов «Библиотека функций» . Это способ хуже предыдущего тем, что если вы не находитесь во вкладке «Формулы» , то придется выполнять дополнительные действия.
Можно также кликнуть на любую другую кнопку блока инструментов «Библиотека функций» . При этом, в выпадающем меню появится список, в самом низу которого есть пункт «Вставить функцию…» . Вот по нему и нужно кликнуть. Но, данный способ является ещё запутаннее предыдущего.
Очень простым способом перехода в режим Мастера является нажатие комбинации горячих клавиш Shift+F3 . Этот вариант предусматривает быстрый переход без дополнительных «телодвижений». Главный недостаток его состоит в том, что далеко не каждый пользователь способен удержать у себя в голове все комбинации горячих клавиш. Так что для новичков в освоении Excel этот вариант не подходит.
Категории элементов в Мастере
Какой бы способ активации из вышеуказанных вы не выбрали, в любом случае, после данных действий запускается окно Мастера . В верхней части окна расположено поле поиска. Сюда можно ввести наименование функции и нажать кнопку «Найти» , чтобы быстрее отыскать нужный элемент и получить доступ к нему.
Средняя часть окна представляет выпадающий список категорий функций, которые представляет Мастер . Чтобы просмотреть данный перечень, жмем на пиктограмму в виде перевернутого треугольника справа от него. Таким образом открывается полный список доступных категорий. Прокручивать вниз его можно с помощью боковой полосы прокрутки.
Все функции разделены на следующие 12 категорий:
- Текстовые;
- Финансовые;
- Дата и время;
- Ссылки и массивы;
- Статистические;
- Аналитические;
- Работа с базой данных;
- Проверка свойств и значений;
- Логические;
- Инженерные;
- Математические;
- Определенные пользователем;
- Совместимость.
В категории «Определенные пользователем» находятся функции, составленные самим юзером или загруженные из внешних источников. В категории «Совместимость» расположены элементы из старых версий Excel, для которых уже существуют более новые аналоги. Они были собраны в эту группу для поддержки совместимости работы с документами, созданными в старых версиях приложения.
Кроме того, в этом же списке находятся две дополнительные категории: «Полный алфавитный перечень» и . В группе «Полный алфавитный перечень» располагается полный список всех функций в независимости от категории. В группе «10 недавно использовавшихся» находится список десяти последних элементов, к которым пользователь прибегал. Этот перечень постоянно обновляется: использовавшиеся раньше элементы убираются, а новые добавляются.
Выбор функции
Для того, чтобы перейти к окну аргументов, прежде всего необходимо выбрать нужную категорию. В поле «Выберите функцию» следует отметить то наименование, которое требуется для выполнения конкретной задачи. В самой нижней части окна находится подсказка в виде комментария к выделенному элементу. После того, как конкретная функция выбрана, требуется нажать на кнопку «OK» .
Аргументы функции
После этого, открывается окно аргументов функции. Главным элементом этого окна являются поля аргументов. У различных функций аргументы отличаются, но принцип работы с ними остается одинаковыми. Их может быть несколько, а может быть и один. В качестве аргументов могут выступать числа, ссылки на ячейки или даже ссылки на целые массивы.
Выполнение функции
После того, как вы нажали на кнопку «OK» Мастер закрывается и происходит выполнение самой функции. Результат выполнения может быть самый разнообразный. Он зависит от тех задач, которые ставятся перед формулой. Например, функция СУММ , которая была выбрана в качестве примера, производит суммирование всех введенных аргументов и показывает результат в отдельной ячейке. Для других вариантов из списка Мастера результат будет абсолютно иным.
Как видим, Мастер функций является очень удобным инструментом, который значительно упрощает работу с формулами в Excel. С его помощью можно производить поиск нужных элементов из списка, а также вводить аргументы через графический интерфейс. Для начинающих пользователей Мастер особенно незаменим.
Одна из самых популярных функций в приложении Excel – ЕСЛИ . Это логическое сравнение значения и получаемого результата. Если говорить проще, то функция может звучать так:
ЕСЛИ условие истинно, то выполняем это, а иначе делаем что-либо еще
Синтаксис этой функции достаточно прост:
ЕСЛИ (логическое_условие; значение_в_случае_ИСТИНА; значение в случае_ЛОЖЬ)
Разберем подробнее:
- Логическое_условие – значение, которое будем проверять
- Значение_в_случае_ИСТИНА – действие, когда требование выполняется
- Значение в случае_ЛОЖЬ – действие, когда Логическое_условие не выполняется
Как использовать функцию
Пример №1
На скриншотах ниже показан самый просто вариант использования. Мы сначала проверяем
заданное условие А1>25
. ЕСЛИ это требование выполняется
, тогда выводим в ячейку «больше 25
», иначе «меньше или равно 25
».
Пример №2
Теперь более сложное задание. Ниже мы рассмотрим пример переаттестации сотрудников предприятия. Изначально таблица выглядит так:
Нам необходимо в столбце С вывести результаты переаттестации, которые могут принимать бинарное значение: СДАЛ или НЕ СДАЛ . Критерии у нас будут такими: кто набрал более 45 балов , тот считается сдавшим экзамен, ну а все остальные нет.
Для выполнения задачи необходимо :
Используем несколько условий
При необходимости, функцию ЕСЛИ можно вложить друг в друга. Таким образом, мы расширим варианты решений.
Для примера, возьмем переаттестацию сотрудников, которую рассмотрели раньше. Изменим критерии результата и выставим каждому оценку : Плохо, Хорошо и Отлично. Отлично будем ставить, когда баллы превысят 60 . Оценку Хорошо можно будет получить, набрав от 45 до 60 балов . Ну и в остальных случаях ставим Плохо .
Как видно из примера, вместо второго и третьего значения функции можно подставлять условие. Таким способом добавляем необходимое число вложений. Однако стоит отметить , что после добавления 3-5 вложений работать с формулой станет практически невозможно, т.к. она будет очень громоздкой.
Другие варианты использования функции
Находим сумму столбцов или ячеек
К примеру, есть необходимость просуммировать каждую вторую ячейку столбца. В этом случае поможет использование оператора СУММЕСЛИ
. Он позволит работать только с теми столбцами, которые попадают под наши требования. Мы будет рассматривать случай, когда необходимо суммировать элементы в нечетных строках.
Для решения задачи, нам потребуется вставить дополнительный столбец и пронумеровать строки 1 и 0. Именно эти данные мы будем использовать в нашей формуле. В примере видно, какую формулу мы использовали.
Синтаксис : СУММЕСЛИ(диапазон_ячеек; используемое_условие; [диапазон_суммирования])
- Диапазон – обязательный аргумент. Тут задается диапазон, который оценивается на соответствие условию.
- Используемое_условие – тут указываем, какие именно ячейки необходимо суммировать.
- Диапазон_суммирования – указываем, какой именно диапазон использовать для суммирования.
Количество повторений элементов на листе
В этом случае мы можем посчитать, сколько раз заданный элемент встречается на листе. Для этого используем функцию СЧЕТЕСЛИ
. Она считает количество ячеек, которые совпадают
с заданным значением.
В этом примере мы считаем, сколько клиентов находится в каждом городе. В формуле мы задаем первым диапазон, а вторым значения, которые следует искать.
Используем СЧЕТЕСЛИ и СУММЕСЛИ при подсчете данных
В примере мы постараемся определить усредненный объем дохода
от клиентов по каждому городу. Для этого поделим суммарный доход города на количество клиентов.
Поиск нескольких вхождений элемента в списке
Если у нас есть постоянно обновляемый список данных, в котором по мере роста могут появляться дубликаты , то поиск вхождений в этом списке может оказаться затруднительным. Для решения этой задачи проще всего воспользоваться функцией ВПР и СЧЕТЕСЛИ .
Для начала, добавим
дополнительный столбец, который добавить порядковый номер вхождения к имени клиента. В результате, первое упоминание элемента будет выдавать Имя1, следующее Имя2 и т.д.
Используем поиск по клиенту Кристина Агилера. Используя формулу ВПР («Кристина Агилера3», диапазон_поиска, 2, ЛОЖЬ), мы получим третий номер этого клиента. В формуле, последним значением ставим ЛОЖЬ, поскольку список не сортирован, и нам необходимо точное совпадение элементов.
Как сократить количество вложений ЕСЛИ
Версии до EXCEL 2003 включительно поддерживали до 7 уровней вложенности ЕСЛИ. Начиная с версии Excel 2007, это ограничение убрали . Но стоит заметить, что ниже 3-4 уровня вложенности мало кто опускается.
Для того чтобы уменьшить количество использования вложений ЕСЛИ, можно использовать функцию ВЫБОР . Она работает со значениями или действиями из заданного списка по номеру индекса.
Синтаксис : ВЫБОР (номер_индекса; значение_индекса1; значение_индекса2; [значение_индекса3];…)
Для примера, функция ВЫБОР (1; «Третий»; «Второй»; «Первый») , вернет нам слово «Третий », если мы ее добавим в ячейку.
Стоит отметить, что имеются некоторые ограничения. В частности, в качестве индекса могут выступать только числа
.
Функция Excel - это заранее определенная формула, которая работает с одним или несколькими значениями и возвращает результат.
Наиболее распространенные функции Excel являются краткой записью часто используемых формул.
Например функция =СУММ(А1:А4) аналогична записи =А1+А2+А3+А4.
А некоторые функции выполняют очень сложные вычисления.
Каждая функция состоит из имени и аргумента .
В предыдущем случае СУММ - это имя функции , а А1:А4 - аргумент . Аргумент заключается в круглые скобки.
Т.к. функция суммы используется наиболее часто, то на панель инструментов "Стандартная" вынесена кнопка "Автосумма".
Введите в ячейки А1, А2, А3 произвольные числа. Активизируйте ячейку А4 и нажмите кнопку автосуммы. Результат показан ниже.
Нажмите клавишу ввода. В ячейку А4 будет вставлена формула суммы ячеек А1..А3. Кнопка автосуммы снабжена выпадающим списком, из которого можно выбрать другую формулу для ячейки.
Для выбора функции служит кнопка "Вставка функции" в строке формул. При ее нажатии появляется следующее окно.
Если точно неизвестна функция, которую надо применить в данный момент, то в окне диалога "Поиск функции" можно произвести поиск.
Если формула очень громоздкая, то можно включить в текст формулы пробелы или разрывы строк. Это никак не влияет на результаты вычислений. Для разрыва строки надо нажать комбинацию клавиш Alt+Enter.
Можно использовать в формулах вместо ссылок на ячейки таблицы заголовки таблицы. Постройте следующий пример.
По умолчанию Microsoft Excel не распознает заголовки в формулах. Чтобы использовать заголовки в формулах, выберите команду Параметры в меню Сервис. На вкладке Вычисления в группе Параметры книги установите флажок Допускать названия диапазонов.
При обычной записи формула в ячейке В6 выглядела бы так: =СУММ(В2:В4).
При использовании заголовков формула будет выглядеть так: =СУММ(Кв 1).
Необходимо знать следующее:
- Если формула содержит заголовок столбца/строки, в котором она находится, то Excel считает, что вы хотите использовать диапазон ячеек, расположенных ниже заголовка столбца таблицы (или справа от заголовка строки);
- Если формула содержит заголовок столбца/строки, отличного от того, в котором она находится, Excel считает, что вы хотите использовать ячейку на пересечении столбца/строки с таким заголовком и строки/столбца, где расположена формула.
- При использовании заголовков можно указать любую ячейку таблицы с помощью пересечения диапазонов. Например, для ссылки на ячейку С3 в нашем примере можно использовать формулу =Строка2 Кв 2 . Обратите внимание на пробел между заголовками строки и столбца.
- Формулы, содержащие заголовки, можно копировать и вставлять, при этом Excel автоматически настраивает их на нужные столбцы и строки. Если будет произведена попытка скопировать формулу в неподходящее место, то Excel сообщит об этом, а в ячейке выведет значение ИМЯ? . При смене названий заголовков, аналогичные изменения происходят и в формулах.
Они используются почти на каждом этапе анализа данных, начиная от и показа описательной статистики, заканчивая функциями для решения узконаправленных задач. Особое место занимают функции "собственного производства": без них сложно обойтись, но их отнюдь не сложно создать. Именно о том, что такое функции, как их использовать и написать самим, я расскажу в этой статье!
Для чего нужны функции в R?
При анализе данных код R записывают в виде скрипта для того, чтобы в последующем можно было легко продолжить работу с ним, либо предоставить возможность воспроизвести Ваш анализ данных другому человеку. Таким образом, скриптовой программой (или скриптом) называется последовательность команд, записанная в текстовом формате. В идеале скрипт должен быть компактным и понятным для другого человека. Для того, чтобы уменьшить количество строк кода, сделать код более читабельным и удобным для редактирования используют функции.
Зачастую во время анализа приходится выполнять одни и те же действия несколько раз, то есть, писать один и тот же код, где лишь незначительная его часть изменена. Однако гораздо практичнее будет оформить подобные массивы кода в функцию. В этом случае блок кода, копируемый из раза в раз, будет телом функции, а места кода, которые Вы изменяете в этом блоке станут аргументами (параметрами) функции. Также у функции должно быть имя, чтобы ее можно было вызвать в . Схема построения функции в R выглядит следующим образом:
Сначала следует написать имя функции, затем знак присвоения и слово function , которое создает объект класса функция. В скобках мы указываем аргументы, а тело функции находится внутри фигурных скобок. Важно отметить, что для использования функции требуется ввести только имя функции и ее аргументы:
Таким образом массивный скрипт с большим количеством повторяющегося кода при помощи функций становится более компактным и понятным для пользователя. Также не забывайте комментировать код, трактовка которого неочевидна, чтобы Вы или другой человек могли понять алгоритм и замысел Вашего анализа.
Использование существующих функций в R
К счастью существует множество готовых функций в R. Так например, mean() , summary() , read.table() , lm() являются базовыми функциями, которыми можно пользоваться без применения сторонних пакетов. Чтобы узнать какие именно аргументы требуется ввести для использования функции введите в консоль знак вопроса и имя функции, например: ?read.table . На открывшейся странице в разделах Usage и Arguments будет перечень аргументов для использования данной функции. Как правило, критически важные аргументы для работы функции находятся в начале списка. Аргументы, которые не будут заполнены примут значения по умолчанию:
read.table("D:/Folder/mytable.txt", sep = "\t", header = T)Так как официальный архив R пакетов (CRAN) насчитывает более 11 тысяч , то количество доступных функций для анализа данных стремительно приближается к 1 млн!!! Как же нам проводить поиск нужной функции во всех этих пакетах? Для этого существует сайт rdocumentation.org : удобный сервис поиска функций и пакетов по искомому слову или сочетанию слов.
Базовая версия R, которая была загружена на Ваш компьютер, состоит из 30 встроенных пакетов. Остальные следует загружать и подключать самостоятельно. Следовательно, сначала мы ищем к какому пакету принадлежит функция, устанавливаем этот пакет в библиотеку пакетов на компьютере, загружаем его в R и лишь после этого используем функции загруженного пакета. Не забывайте загружать пакет при повторном запуске R, если снова собираетесь использовать функции этого пакета.
Создание функций: три наглядных примера!
Сколько бы функций не существовало в CRAN, рано или поздно придется написать свои собственные. Причин на это может быть несколько: такой функции еще не написано; проще написать свою, чем искать ее в других R пакетах: и т.д. Так или иначе, создать функции совсем не сложно. Для того, чтобы это доказать, я приведу три простых примера, которые помогут понять логику построения функций.
Пример 1: сколько будет 2+2×2?
Создадим простейшую функцию, основанную исключительно на арифметических действиях. Например, вычислим знакомый нам с начальной школы пример: сколько будет 2+2*2? Усложним немного: 12+12*12? Ну и в завершении арифметических упражнений 42+42*42? Как Вы могли заметить, все эти примеры основаны на одной и той же формуле: a+a*a . Создание функции в R будет идеальным решением для подобного рода задач.
school <- function(a){ b = a+a*a print(b) } school(2) school(12) school(22)Результат вычислений функции отобразится на экране консоли, т.к. для вывода информации мы использовали базовую функцию print() внутри нашей функции . Когда же нам требуется сохранить результат в виде отдельного объекта (переменной), следует воспользоваться функцией return() , что мы сделаем в следующем примере.
Пример 2: от горшка два вершка
В детстве мы все читали русские народные сказки. Меня, например, всегда интересовало что значит фраза "от горшка два вершка", а точнее сколько это в сантиметрах. Думаю, пришло время получить ответ: создадим конвертер вершков в R при помощи новой функции convershok().
Один вершок равен 4.445 см. Пусть программа выводит на экран предложение от том, что столько вершков равняется столько-то сантиметров, используя базовую функцию для объединения текстовых и числовых объектов paste() . Также мы хотим, чтобы полученное значение сохранялись как отдельный объект, для чего в конце функции добавим return(vershok) .
convershok <- function(n){ vershok <- n * 4.445 print(paste(n, "vershok", "=", vershok, "cm")) return(vershok) } x <- convershok(2)Отлично, мы получили заветное сообщение и сохранили 8.89 (см), как объект x. Вот только о каком именно горшке идет речь в поговорке не сказано, поэтому измерьте высоту первого попавшегося горшка, добавьте это значение к переменной x и напишите в комментариях, сколько у Вас получилось;-)
Пример 3: ноутбук в кредит, сколько придется переплатить?
Допустим, у студента сломался ноутбук. На данный момент у него нет свободных денег на покупку нового, и он решил взять его в кредит. В банке ему предложили кредит на сумму 30.000 рублей с процентной ставкой 35% годовых и возможностью преждевременного погашения. Рассчитаем сколько денег нужно выплатить за ноутбук при погашении кредита через месяц, три месяца и год.
Для расчетов я использую формулу для вычисления суммы процентов, начисленных за пользование кредитом в течение n месяцев.
sp = p * (t + 1) / 24 , где:
sp
- сумма процента
p
- годовая процентная ставка
t
- срок кредита (месяцев).
Реализуем эту формулу в R, после чего добавим к цене ноутбука (n ) высчитанный суммарный процент (sp ), помноженный на цену ноутбука товара (n ):
result <- function(n, p, t){ sp <- p*(t + 1)/24 total <- n + n*sp/100 print(paste("sp =", round(sp, 2), "%; ", "total price =", total, "rubles")) } result(30000, 35, 1) result(30000, 35, 3) result(30000, 35, 12)Как Вы видите, 35% годовых отнють не означает, что студент будет платить за кредит 35% от текущей стоимости ноутбука: в реальности за год он переплатит на 19%. Другой интересный вывод в том, что кредитный процент на один месяц гораздо выше, чем усредненный месячный процент на три месяца и тем более на год. То есть брать кредиты на долгий срок "выгодно" :-)
А главное, наш студент может использовать эту же функцию для своих будущих расчетов, если решит брать кредит в другом банке с другой процентной ставкой или выбрать ноутбук в другой ценовой категории. Для этого ему лишь надо изменить значения аргументов в функции.
Заключение
На мой взгляд, создание функций - искусство особого рода, где дерзкие, а порой и совершенно нелепые идеи сочетаются с прагматичным подходом к их реализации. Надеюсь, что эта информация была для Вам полезной. В следующий раз я продолжу рассказ о функцияз, где мы сконцентрируемся на работе . Если у Вас появились вопросы, задавайте их в комментариях, я всегда рад на них ответить!