Выполнить действия а больше 0 б больше 0: Выполнить действия ( а больше 0, b больше 0):…

Содержание

ЕСЛИ (функция ЕСЛИ) — Служба поддержки Майкрософт

Формулы и функции

  • Общие сведения о формулах в Excel
    Статья
  • ПРОСМОТРX
    Статья
  • ВПР
    Статья
  • Функция СУММ
    Статья
  • Функция СЧЁТЕСЛИ
    Статья
  • Функция ЕСЛИ
    Статья
  • ЕСЛИМН
    Статья
  • СУММЕСЛИ
    Статья
  • СУММЕСЛИМН
    Статья
  • ПОИСКПОЗ
    Статья

Далее: Использование функций

Функция ЕСЛИ — одна из самых популярных функций в Excel. Она позволяет выполнять логические сравнения значений и ожидаемых результатов.

Поэтому у функции ЕСЛИ возможны два результата. Первый результат возвращается в случае, если сравнение истинно, второй — если сравнение ложно.

Например, функция =ЕСЛИ(C2=»Да»;1;2) означает следующее: ЕСЛИ(С2=»Да», то вернуть 1, в противном случае вернуть 2).

Функция ЕСЛИ, одна из логических функций, служит для возвращения разных значений в зависимости от того, соблюдается ли условие.

ЕСЛИ(лог_выражение; значение_если_истина; [значение_если_ложь])

Например:

Имя аргумента

Описание

лог_выражение    (обязательно)

Условие, которое нужно проверить.

значение_если_истина    (обязательно)

Значение, которое должно возвращаться, если лог_выражение имеет значение ИСТИНА.

значение_если_ложь    (необязательно)

Значение, которое должно возвращаться, если лог_выражение имеет значение ЛОЖЬ.

Простые примеры функции ЕСЛИ

  • =ЕСЛИ(C2=»Да»;1;2)

В примере выше ячейка D2 содержит формулу:

ЕСЛИ(C2 = Да, то вернуть 1, в противном случае вернуть 2)

В этом примере ячейка D2 содержит формулу: ЕСЛИ(C2 = 1, то вернуть текст «Да», в противном случае вернуть текст «Нет»). Как видите, функцию ЕСЛИ можно использовать для сравнения и текста, и значений. А еще с ее помощью можно оценивать ошибки. Вы можете не только проверять, равно ли одно значение другому, возвращая один результат, но и использовать математические операторы и выполнять дополнительные вычисления в зависимости от условий. Для выполнения нескольких сравнений можно использовать несколько вложенных функций ЕСЛИ.

В примере выше функция ЕСЛИ в ячейке D2 означает: ЕСЛИ(C2 больше B2, то вернуть текст «Превышение бюджета», в противном случае вернуть текст «В пределах бюджета»)

На рисунке выше мы возвращаем не текст, а результат математического вычисления. Формула в ячейке E2 означает:

ЕСЛИ(значение «Фактические» больше значения «Плановые», то вычесть сумму «Плановые» из суммы «Фактические», в противном случае ничего не возвращать).

В этом примере формула в ячейке F7 означает: ЕСЛИ(E7 = «Да», то вычислить общую сумму в ячейке F5 и умножить на 8,25 %, в противном случае налога с продажи нет, поэтому вернуть 0)

Примечание: Если вы используете текст в формулах, заключайте его в кавычки (пример: «Текст»). Единственное исключение — слова ИСТИНА и ЛОЖЬ, которые Excel распознает автоматически.

Распространенные неполадки

Проблема

Возможная причина

0 (ноль) в ячейке

Не указан аргумент значение_если_истина или значение_если_ложь. Чтобы возвращать правильное значение, добавьте текст двух аргументов или значение ИСТИНА/ЛОЖЬ.

#ИМЯ? в ячейке

Как правило, это указывает на ошибку в формуле.

Дополнительные сведения

Вы всегда можете задать вопрос специалисту Excel Tech Community или попросить помощи в сообществе Answers community.

См. также

Функция ЕСЛИ — вложенные формулы и типовые ошибки

Функция УСЛОВИЯ

Использование ЕСЛИ с функциями И, ИЛИ и НЕ

СЧЁТЕСЛИ

Рекомендации, позволяющие избежать появления неработающих формул

Общие сведения о формулах в Excel

Знакомство с R (молниеносное и поверхностное).

  • О курсе
  • Презентации и данные
  • Полезности

Собственно, сам R

RStudio — среда для разработки (IDE) на R

Онлайн IDE для R — на тот случай, если у вас не установлен R:

  • https://rstudio.
    cloud
  1. Создайте папку, где будут храниться ВСЕ материалы курса. Например: Мы будем ее называть рабочей директорией. В эту папку помещайте ВСЕ файлы с кодом (с расширением .R).
  2. Внутри папки linmodr создайте папку data, где будут храниться все файлы с данными для анализа.

В итоге у вас должно получиться примерно это:

C:\linmodr\
C:\linmodr\data\

Настройка RStudio

Все настройки RStudio находятся в меню Tools -> Global Options

  • Восстановление рабочего пространства из прошлого сеанса — это лучше отменить, т.к. обычно переменные-призраки очень мешают. На вкладке General убираем галочку Restore .RData into workspace at startup, и меняем Save workspace to .RData on exitNever
  • Перенос длинных строк в окне кода — это удобно. На вкладке Code
    ставим галочку рядом с опцией Soft-wrap R source files

Комментарии в текстах программ обозначаются символом #

# это комментарии, они не будут выполняться
  • Ctrl + Shift + C — закомментировать/раскомментировать выделенный фрагмент кода
  • Ctrl + Enter — отправляет активную строку из текстового редактора в консоль, а если выделить несколько строк, то будет выполнен этот фрагмент кода.
  • Tab или Ctrl + Space — нажмите после того как начали набирать название функции или переменной, и появится список автоподстановки. Это помогает печатать код быстро и с меньшим количеством ошибок.
  1. В RStudio можно поставить курсор на слово setwd и нажать F1
  2. Перед названием функции можно напечатать знак вопроса и выполнить эту строку
    ?setwd
  3. Можно воспользоваться функцией help()
help("setwd")
## [1] 4
1024/2
## [1] 512
##  [1]  1  2  3  4  5  6  7  8  9 10
## [1] 136
## [1] 16
sqrt(27)
## [1] 5.196152

Оператор присваивания это символ стрелочки <-. Он работает справа налево, это значит, что значение выражения в его правой части присваивается объекту в левой части.

Переменные — это такие контейнеры, в которые можно положить разные данные и даже функции.

Имена переменных могут содержать латинские буквы обоих регистров, символы точки . и подчеркивания _ , а так же цифры. Имена переменных должны начинаться с латинских букв. Создавайте понятные и “говорящие” имена переменных.

var_1 <- 1024 / 2
1238 * 3 -> var_2
var_2
## [1] 3714

Как выбрать название переменной?

  • a — плохо, и даже b, с, или х. Но в некоторых случаях допустимо:)
  • var1 — плохо, но уже лучше
  • var_1 — плохо, но уже лучше
  • shelllength — говорящее, но плохо читается
  • shell_length, wing_colour или leg_num — хорошие говорящие и читабельные названия

Данные в R можно хранить в виде разных объектов.

В результате выполнения следующих команд числа. Одно выражение — одно значение.

## [1] 23
sqrt(25)
## [1] 5

На самом деле, эти величины — просто векторы единичной длины

Векторы — один объект, внутри которого несколько значений.

Некоторые способы создания векторов:

  • Оператор: используется для создания целочисленных векторов, где значения следуют одно за другим без пропусков
1:10 # от одного до 10
##  [1]  1  2  3  4  5  6  7  8  9 10
-5:3 # от -5 до 3
## [1] -5 -4 -3 -2 -1  0  1  2  3
  • Функция seq() создает последовательности из чисел
seq(from = 1, to = 5, by = 0.5)
## [1] 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0
  • Функция c() — от англ. concatenate. Следите, чтобы было английское си, а не русское эс:).
?c # посмотрите хелп к функции

Функция c принимает несколько (произвольное количество) аргументов, разделенных запятыми. Она собирает из них вектор.

c(2, 4, 6)
## [1] 2 4 6
c(-9.3, 0, 2.17, 21.3)
## [1] -9.30  0.00  2.17 21.30

Векторы можно хранить в переменных для последующего использования

vect_num <- -11:12 # численный вектор от -11 до 12 сохранен в переменной vect_num
vect_num_1 <- c(1. 3, 1.7, 1.2, 0.9, 1.6, 1.4) # численный вектор, сохранен в переменной vect_num_1

Адресация внутри векторов

При помощи оператора [], можно обратится к некоторым элементам вектора. В квадратных скобках вам нужно указать один или несколько порядковых номеров элементов

vect_num[1] # первый элемент в векторе vect_num
## [1] -11
vect_num[10] # 10-й элемент
## [1] -2
vect_num[22]
## [1] 10

Если вам нужно несколько элементов, то их нужно передать квадратным скобкам в виде вектора. Например, нам нужны элементы с 3 по 5. Вот вектор, который содержит значения 3, 4 и 5.

## [1] 3 4 5

Если мы его напишем в квадратных скобках, то добудем элементы с такими порядковыми номерами

vect_num[3:5]
## [1] -9 -8 -7

Аналогично, если вам нужны элементы не подряд, то передайте вектор с номерами элементов, который вы создали при помощи функции c() c(2, 4, 6) # это вектор содержащий 2, 4 и 6, поэтому

vect_num[c(2, 4, 6)] # возвращает 2-й, 4-й и 6-й элементы
## [1] -10  -8  -6
vect_num[c(1, 10, 20)] # возвращает 1-й, 10-й и 20-й элементы
## [1] -11  -2   8

Вектор — одномерный объект. У его элементов только один порядковый номер (индекс). Поэтому при обращении к элементам вектора нужно указывать только одно число или один вектор с адресами.

Правильно:

vect_num[c(1, 2, 5)] # возвращает 1-й, 3-й и 5-й элементы
## [1] -11 -10  -7

Но R выдаст ошибку, если при обращении к вектору, вы не создавали вектор, а просто перечислили номера элементов через запятую.

vect_num[1, 3, 5] # ошибка
vect_num[15, 9, 1] # ошибка
vect_num[c(15, 9, 1)] # правильно
## [1]   3  -3 -11

При помощи функции c() можно объединять несколько векторов в один вектор

c(1, 1, 5:9)
## [1] 1 1 5 6 7 8 9
c(vect_num, vect_num)
##  [1] -11 -10  -9  -8  -7  -6  -5  -4  -3  -2  -1   0   1   2   3   4   5   6   7
## [20]   8   9  10  11  12 -11 -10  -9  -8  -7  -6  -5  -4  -3  -2  -1   0   1   2
## [39]   3   4   5   6   7   8   9  10  11  12
c(100, vect_num)
##  [1] 100 -11 -10  -9  -8  -7  -6  -5  -4  -3  -2  -1   0   1   2   3   4   5   6
## [20]   7   8   9  10  11  12

Добываем 1, 3, 5 и с 22 по 24 элементы

vect_num[c(1, 3, 5, 22:24)]
## [1] -11  -9  -7  10  11  12

Числовые данные

Уже видели в прошлом разделе.

Текстовые данные

Каждый текстовый элемент (говорят “строка” — string или character) должен быть окружен кавычками — двойными или одинарными.

"это текст"
## [1] "это текст"
'это тоже текст'
## [1] "это тоже текст"

Текстовые значения можно объединять в вектора.

Это текстовый вектор

rainbow <- c("red", "orange", "yellow", "green", "blue", "violet")
rainbow # весь вектор
## [1] "red"    "orange" "yellow" "green"  "blue"   "violet"

Добываем первый и последний элементы

В данном случае я точно знаю, что их 6, мне нужны 1 и 6.

rainbow[c(1, 6)]
## [1] "red"    "violet"

Добываем элементы с 3 по 6

Если у вас вдруг слишком короткий вектор в этом задании, то можно склеить новый из двух

double_rainbow <- c(rainbow, rainbow)
double_rainbow
##  [1] "red"    "orange" "yellow" "green"  "blue"   "violet" "red"    "orange"
##  [9] "yellow" "green"  "blue"   "violet"
rainbow[3:6] # элементы с 3 по 6
## [1] "yellow" "green"  "blue"   "violet"

Логические данные

TRUE # истина
## [1] TRUE
FALSE # ложь
## [1] FALSE

Для ленивых — можно сокращать первыми заглавными буквами. Но лучше так не делать, чтобы читать программы было легче.

c(T, T, T, T, F, F, T, T)
## [1]  TRUE  TRUE  TRUE  TRUE FALSE FALSE  TRUE  TRUE

Логический вектор

c(TRUE, TRUE, TRUE, FALSE, FALSE, TRUE)
## [1]  TRUE  TRUE  TRUE FALSE FALSE  TRUE

Еще логический вектор

short_logical_vector <- c(FALSE, TRUE)

Создаем длинный логический вектор.

Чтобы создавать длинные вектора из повторяющихся элементов, можно использовать функцию rep()

?rep
rep(x = 1, times = 3) # 1 повторяется 3 раза
## [1] 1 1 1
rep(x = "red", times = 5) # "red" повторяется 5 раз
## [1] "red" "red" "red" "red" "red"
rep(x = TRUE, times = 2) # TRUE повторяется 2 раза
## [1] TRUE TRUE

В R названия аргументов функций можно не указывать, если вы используете аргументы в том же порядке, что прописан в help к этой функции.

rep(TRUE, 5) # TRUE повторяется 5 раз, аргументы без названий
## [1] TRUE TRUE TRUE TRUE TRUE

Создаем логический вектор, где TRUE повторяется 3 раза, FALSE 3 раза и TRUE 4 раза. Результат сохраняем в переменной vect_log

vect_log <- c(rep(TRUE, 3), rep(FALSE, 3), rep(TRUE, 4))
vect_log
##  [1]  TRUE  TRUE  TRUE FALSE FALSE FALSE  TRUE  TRUE  TRUE  TRUE

Применение логических векторов для фильтрации данных

Логические векторы создаются при проверке выполнения каких либо условий, заданных при помощи логических операторов (>, <, ==, !=, >=, <=, !, &, |). Такие векторы можно использовать для фильтрации данных

Вспомните, у нас был вот такой текстовый вектор

double_rainbow
##  [1] "red"    "orange" "yellow" "green"  "blue"   "violet" "red"    "orange"
##  [9] "yellow" "green"  "blue"   "violet"

Задача 1. Допустим, мы хотим из этого вектора извлечь только желтый цвет.

Мы можем создать логический вектор, в котором TRUE будет только для 3-го и 9-го элементов

f_yellow <- double_rainbow == "yellow"
f_yellow
##  [1] FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE

Этот логический вектор-фильтр мы можем использовать для извлечения данных из double_rainbow

double_rainbow[f_yellow]
## [1] "yellow" "yellow"

Задача 2. Допустим, мы хотим извлечь из double_rainbow желтый и синий Желтый фильтр у нас уже есть, поэтому мы создадим фильтр для синего.

f_blue <- double_rainbow == "blue"

Выражение “желтый или синий” можно записать при помощи логического “или” (|)

f_yellow | f_blue
##  [1] FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE FALSE  TRUE FALSE  TRUE FALSE

Задача решена, мы извлекли желтый и синий цвета.

double_rainbow[f_yellow | f_blue]
## [1] "yellow" "blue"   "yellow" "blue"

То же самое можно было бы записать короче.

В одну строку — совершенно нечитабельно:

double_rainbow[double_rainbow == "yellow" | double_rainbow == "blue"]
## [1] "yellow" "blue"   "yellow" "blue"

Фильтр отдельно — читается лучше:

f_colours <- double_rainbow == "yellow" | double_rainbow == "blue"
double_rainbow[f_colours]
## [1] "yellow" "blue"   "yellow" "blue"

У нас был числовой вектор

vect_num
##  [1] -11 -10  -9  -8  -7  -6  -5  -4  -3  -2  -1   0   1   2   3   4   5   6   7
## [20]   8   9  10  11  12

Задача 3. Давайте извлечем из числового вектора vect_num только значения больше 0

vect_num[vect_num > 0]
##  [1]  1  2  3  4  5  6  7  8  9 10 11 12

Задача 4. Давайте извлечем из вектора vect_num все числа, которые либо меньше или равны -8, либо больше или равны 8

f_5_8 <- (vect_num <= -8) | (vect_num >= 8)
vect_num[f_5_8]
## [1] -11 -10  -9  -8   8   9  10  11  12

Факторы

Факторы — это способ хранения дискретных (=категориальных данных). Например, если вы поймали 10 улиток и посмотрели их цвет. У большого количества улиток небольшое счетное количество возможных цветов.

snail_colours <- c("red", "green", "green", "green", "yellow", "yellow", "yellow", "yellow")
snail_colours # это текстовый вектор.
## [1] "red"    "green"  "green"  "green"  "yellow" "yellow" "yellow" "yellow"

Но цвет “желтый” обозначает одно и то же для каждой из улиток. Поэтому в целях экономии места можно записать цвета этих улиток в виде вектора, в котором численным значениям будут сопоставлены “этикетки” (называются “уровни” — levels) — названия цветов. Мы можем создать “фактор” цвет улиток.

factor(snail_colours)
## [1] red    green  green  green  yellow yellow yellow yellow
## Levels: green red yellow

уровни этого фактора

  • 1 — green,
  • 2 — red,
  • 3 — yellow

По умолчанию, R назначает порядок уровней по алфавиту. Можно изменить порядок (см. help("factor")). Нам это пригодится позже

double_rainbow # текстовый вектор
##  [1] "red"    "orange" "yellow" "green"  "blue"   "violet" "red"    "orange"
##  [9] "yellow" "green"  "blue"   "violet"

Создаем фактор из текстового вектора и складываем его в переменную

f_double_rainbow <- factor(double_rainbow)

Как узнать, что за данные хранятся в переменной?

Чтобы узнать, что за данные хранятся в переменной, используйте функцию class()

class(f_double_rainbow)
## [1] "factor"
class(vect_log)
## [1] "logical"
class(vect_num)
## [1] "integer"
class(rainbow)
## [1] "character"

Встроенные константы в R: NA, NULL, NAN, Inf

  • NA — англ “not available”. Когда объект был, но его свойство не измерили или не записали.
  • NULL — пусто — просто ничего нет
  • NaN — “not a number”
  • Inf — “infinity” — бесконечность

Вот текстовый вектор с пропущенным значением

rainbow_1 <- c("red", "orange", NA, "green", "blue", "violet")

Кстати, если попросили добыть из вектора номер элемента, которого там точно нет, то R выдаст NA, потому, что такого элемента нет

rainbow_1[198]
## [1] NA

Поэкспериментируем с векторами. Проверим, как работают арифметические операции

vect_num + 2
##  [1] -9 -8 -7 -6 -5 -4 -3 -2 -1  0  1  2  3  4  5  6  7  8  9 10 11 12 13 14
vect_num * 2
##  [1] -22 -20 -18 -16 -14 -12 -10  -8  -6  -4  -2   0   2   4   6   8  10  12  14
## [20]  16  18  20  22  24
vect_num * (-2)
##  [1]  22  20  18  16  14  12  10   8   6   4   2   0  -2  -4  -6  -8 -10 -12 -14
## [20] -16 -18 -20 -22 -24
vect_num ^2
##  [1] 121 100  81  64  49  36  25  16   9   4   1   0   1   4   9  16  25  36  49
## [20]  64  81 100 121 144

Теперь посмотрим на встроенные константы в действии.

Создаем новый вектор для экспериментов

NAs_NANs <- c(1, 3, NA, 7, 0, 22:24)

Вот так он выглядит

NAs_NANs
## [1]  1  3 NA  7  0 22 23 24

Что произойдет с NA?

NAs_NANs + 2 # останется NA
## [1]  3  5 NA  9  2 24 25 26
NAs_NANs * 0 # останется NA
## [1]  0  0 NA  0  0  0  0  0
NAs_NANs / 0  # останется NA
## [1] Inf Inf  NA Inf NaN Inf Inf Inf

Но в последнем случае вы увидите

  • Inf при делении чисел на ноль
  • NaN при делении нуля на ноль

NaN получится, если взять корень из отрицательного числа

sqrt(-1)
## Warning in sqrt(-1): NaNs produced
## [1] NaN

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

Вот наш вектор

NAs_NANs
## [1]  1  3 NA  7  0 22 23 24

Длину вектора можно вычислить при помощи функции length()

length(NAs_NANs)
## [1] 8

Сумму элементов вектора при помощи функции sum()

sum(NAs_NANs)
## [1] NA

Упс! Почему-то получилось NA

Чтобы узнать, почему и как это исправить — посмотрите в help("sum"). Выяснится, что у функции sum() есть аргумент na.rm, который по умолчанию принимает значение FALSE, то есть NA не учитываются при подсчете суммы.

Если мы передадим функции sum аргумент na.rm = TRUE, то получится правильная сумма

sum(NAs_NANs, na.rm = TRUE)
## [1] 80

Та же история с функцией mean

mean(NAs_NANs, na.rm = TRUE)
## [1] 11.42857

Попробуем написать пользовательскую функцию mmean(), которая будет по умолчанию считать среднее значение элементов в векторе с учетом пропущенных значений (NA)

mmean <- function(x){
  mean(x, na.rm = TRUE)
  }

В этом коде: — mmean — переменная, название функции. В эту переменную мы складываем функцию, которую создает функция function()function() — функция, которая делает функции. В скобках перечисляются аргументы (названия переменных, которые мы передаем в функцию, чтобы она что-то сделала с ними) — { } — в фигурных скобках тело функции — последовательность действий, которую нужно сделать с аргументами

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

mmean <- function(x){
  res <- mean(x, na.rm = TRUE)
  return(res)
}

Проверим нашу функцию при помощи встроенной функции

mean(vect_num, na.rm = TRUE)
## [1] 0.5
mmean(vect_num)
## [1] 0.5

Работает

Датафрейм — один из способов хранения табличных данных в R. Создадим датафрейм.

Для этого, для начала, создадим векторы с данными для переменных.

len <- 1:9 # числовой
col <- c(rep("green", 4), rep("red", 5)) # текстовый
wid <- seq(from = 2, by = 2, to = 18) # числовой

Теперь сложим эти векторы в датафрейм

my_worms <- data.frame(Length = len, Width = wid, Colour = col)

Можно проверить, действительно мы создали объект класса data.frame

class(my_worms) # смотрим, действительно датафрейм
## [1] "data.frame"

Содержимое датафрейма можно просмотреть несколькими способами

my_worms # печать датафрейма
##   Length Width Colour
## 1      1     2  green
## 2      2     4  green
## 3      3     6  green
## 4      4     8  green
## 5      5    10    red
## 6      6    12    red
## 7      7    14    red
## 8      8    16    red
## 9      9    18    red
View(my_worms) # просмотр в RStudio
head(my_worms)
##   Length Width Colour
## 1      1     2  green
## 2      2     4  green
## 3      3     6  green
## 4      4     8  green
## 5      5    10    red
## 6      6    12    red
tail(my_worms)
##   Length Width Colour
## 4      4     8  green
## 5      5    10    red
## 6      6    12    red
## 7      7    14    red
## 8      8    16    red
## 9      9    18    red
# fix(my_worms) # ручное редактирование.  осторожно! избегайте его использовать, никаких документов о нем не останется

Адресация внутри датафреймов

Вывод столбца-переменной при помощи оператора $ и имени переменной

my_worms$Length
## [1] 1 2 3 4 5 6 7 8 9
my_worms$Width
## [1]  2  4  6  8 10 12 14 16 18

У каждой ячейки в датафрейме есть координаты вида [строка, столбец]

my_worms[2, 3] # вторая строка в 3 столбце
## [1] "green"
my_worms[2, ] # вторая строка целиком
##   Length Width Colour
## 2      2     4  green
my_worms[1:9, 2] # строки с 1 по 9 во втором столбце
## [1]  2  4  6  8 10 12 14 16 18
my_worms[, 2] # второй столбец целиком
## [1]  2  4  6  8 10 12 14 16 18

Базовые графики

Скаттерплот (точечный график) — по оси х и y непрерывные числовые величины

plot(x = my_worms$Width, y = my_worms$Length)

Боксплот — по оси х дискретная величина, по оси y значение непрерывной величины. Черта — медиана, коробка — 25 и 75 перцентили, усы — либо размах варьирования, либо 1.5 интерквартильных расстояния (1.5 высоты коробки), если есть “выбросы”.

plot(x = as.factor(my_worms$Colour), y = my_worms$Length)

Для настройки внешнего вида см graphical parameters в help

На самом деле, мы не будем пользоваться этой системой графики, но об этом в следующих сериях

Графики из пакета ggplot2

В R есть более удобный (но, может быть, более многословный) пакет для рисования графиков — ggplot2. Чтобы использовать функции из пакета ggplot2, нужно его сначала установить.

Установка пакета в локальную библиотеку делается один раз. Поэтому строку с install.packages() не нужно включать в финальную версию кода.

install.packages('ggplot2')

В текущей сессии работы в R пакет нужно активировать перед использованием. Когда вы в следующий раз начнете работать с R, нужные пакеты придется снова активировать. Поэтому строки с загрузкой пакетов при помощи library() обязательно должны остаться в финальной версии кода.

library(ggplot2)

Нарисуем те же самые графики при помощи пакета ggplot2.

ggplot(data = my_worms) +
  geom_point(aes(x = Width, y = Length))

ggplot(data = my_worms) +
  geom_boxplot(aes(x = Colour, y = Length))

Добавляем для точек эстетику цвет (colour) из переменной Colour

ggplot(data = my_worms) +
  geom_point(aes(x = Width, y = Length, colour = Colour))

Графики можно сохранять в переменных, и использовать потом

gg <- ggplot(data = my_worms) +
  geom_point(aes(x = Width, y = Length, colour = Colour))

Чтобы вывести график, нужно напечатать название переменной.

Можно менять темы оформления графика. Если тема нужна только один раз, то прибавляем ее к графику

gg + theme_dark()

gg + theme_light()

gg + theme_classic()

Можно установить нужную тему до конца сессии.

theme_set(theme_bw())
gg

Подписи осей и легенд задает функция labs()

gg + labs(x = "Ширина", y = "Длина", colour = "Цвет")

Графики можно делить на фасетки при помощи facet_wrap или facet_grid

gg + facet_wrap(~Colour, nrow = 1)

Чтобы изменить подписи цветов, нужно изменить уровни соотв. фактора.

my_worms$col_rus <- factor(my_worms$Colour, levels = c("green", "red"), labels = c("Зеленый", "Красный"))
ggplot(data = my_worms) +
  geom_point(aes(x = Width, y = Length, colour = col_rus)) +
  labs(x = "Ширина", y = "Длина", colour = "Цвет") +
  facet_wrap(~col_rus, nrow = 1)

Больше или равно (>=) — JavaScript

Оператор больше или равен ( >= ) возвращает true , если левый операнд больше или равен правому операнду, и ложь в противном случае.

 х >= у
 

Операнды сравниваются по тому же алгоритму, что и оператор «Меньше», с инвертированием результата. x >= y обычно эквивалентно !(x < y) , за исключением двух случаев, когда x >= y и x < y оба равны false :

  • выдает синтаксическую ошибку при передаче в BigInt() ).
  • Если один из операндов преобразуется в NaN . (Например, строки, которые нельзя преобразовать в числа, или undefined .)

х >= у обычно эквивалентно x > y || x == y , за исключением нескольких случаев:

  • Когда одно из x или y равно null , а другое не является null и становится 0 при приведении к числовому (включая 9 0004 0 , 0n , false , "" , "0" , new Date(0) и т. д.): x >= y is true , а x > y || х == у равно ложь .
  • Когда одно из x или y равно undefined , а другое является одним из null или undefined : x >= y равно false , а x == y равно правда .
  • Когда x и y являются одним и тем же объектом, который становится NaN после первого шага Меньше чем (например, new Date(NaN) ): x >= y равно false , а x == y равно true .
  • Когда x и y являются разными объектами, которые становятся одним и тем же значением после первого шага Меньше чем: x >= y равно true , а x > y || x == y равно false .

Сравнение строк

 "a" >= "b"; // ЛОЖЬ
"а" >= "а"; // истинный
"а" >= "3"; // истинный
 

Сравнение строки с числом

 "5" >= 3; // истинный
"3" >= 3; // истинный
"3" >= 5; // ЛОЖЬ
"привет" >= 5; // ЛОЖЬ
5 >= "привет"; // ЛОЖЬ
 

Сравнение номеров

 5 >= 3; // истинный
3 >= 3; // истинный
3 >= 5; // ЛОЖЬ
 

Сравнение числа с BigInt

 5n >= 3; // истинный
3 >= 3н; // истинный
3 >= 5н; // ЛОЖЬ
 

Сравнение логических значений, null, undefined, NaN

 true >= false; // истинный
правда >= правда; // истинный
ложь >= истина; // ЛОЖЬ
правда >= 0; // истинный
правда >= 1; // истинный
ноль >= 0; // истинный
1 >= ноль; // истинный
не определено >= 3; // ЛОЖЬ
3 >= не определено; // ЛОЖЬ
3 >= NaN; // ЛОЖЬ
NaN >= 3; // ЛОЖЬ
 
Спецификация
Спецификация языка ECMAScript
# sec-relational-operators
Таблицы

BCD загружаются только в браузере с включенным JavaScript. Включите JavaScript для просмотра данных.

  • Больше, чем оператор
  • Меньше, чем оператор
  • Оператор меньше или равно

Обнаружили проблему с содержанием этой страницы?

  • Отредактируйте страницу на GitHub.
  • Сообщить о проблеме с содержимым.
  • Посмотреть исходный код на GitHub.

Хотите принять более активное участие?

Узнайте, как внести свой вклад.

Последний раз эта страница была изменена участниками MDN.

Если еще и Вложенные, если еще

Операторы If-Else являются важной частью программирования R. В этом руководстве мы увидим различные способы применения условных операторов (If..Else вложенный IF) в R. В R есть много мощных пакетов для манипулирования данными. В более поздней части этого руководства мы увидим, как операторы IF ELSE используются в популярных пакетах.

Образец данных

Давайте создадим образец данных, чтобы показать, как выполнять функцию ЕСЛИ ИНАЧЕ. Этот фрейм данных будет использоваться далее в примерах.

x1 x2 х3
1 129 А
3 178 Б
5 140 С
7 186 Д
9 191 Э
11 104 Ф
13 150 Г
15 183 Х
17 151 я
19 142 Дж

Запустите программу ниже, чтобы создать приведенную выше таблицу в R.

сет.сид(123)
mydata = data.frame(x1 = seq(1,20,by=2),
                    x2 = выборка (100:200,10,ЛОЖЬ),
                    x3 = БУКВЫ [1:10])
 

x1 = seq(1,20,by=2)   : Переменная 'x1' содержит альтернативные числа от 1 до 20. Всего это 10 числовых значений.

x2 = выборка(100:200,10,FALSE) : Переменная 'x2' представляет собой 10 неповторяющихся случайных чисел в диапазоне от 100 до 200.

x3 = БУКВЫ[1:10] : Переменная 'x3' содержит 10 алфавитов, начиная с A до Z.

Синтаксис функции ifelse() :

Функция ifelse() в R работает аналогично функции MS Excel ЕСЛИ. Синтаксис см. ниже:

. ifelse(условие, значение, если условие истинно, значение, если условие ложно)

Пример 1: простой оператор IF ELSE

Предположим, вас попросили создать двоичную переменную — 1 или 0 на основе переменной «x2». Если значение переменной 'x2' больше 150, присвойте 1, иначе 0.

mydata$x4 = если еще (mydata$x2>150,1,0)

В этом случае он создает переменную x4 в том же фрейме данных «mydata». Результат показан на изображении ниже:

ifelse : Output

Создать переменную в новом фрейме данных

Предположим, вам нужно добавить созданную выше бинарную переменную в новый фрейм данных. Вы можете сделать это, используя приведенный ниже код -

х = если еще (мои данные $ х2> 150,1,0)
новые данные = cbind (х, мои данные)
 

cbind() используется для объединения двух векторов, матриц или фреймов данных по столбцам.

Применить ifelse() к символьным переменным

Если переменная 'x3' содержит символьные значения - 'A', 'D', то переменная 'x1' должна быть умножена на 2. В противном случае она должна быть умножена на 3.

mydata$y = ifelse(mydata$x3 %in% c("A","D") ,mydata$x1*2,mydata$x1*3)

Результат показан в таблице ниже

х1 х2 х3 у
1 129 А 2
3 178 Б 9
5 140 С 15
7 186 Д 14
9191 Э 27
11 104 Ф 33
13 150 Г 39
15 183 Н 45
17 151 я 51
19 142 Дж 57
 

Пример 2. Вложенный оператор If ELSE в R

Несколько операторов If Else можно написать аналогично функции If в Excel. В этом случае мы говорим R умножить переменную x1 на 2, если переменная x3 содержит значения «A», «B». Если значения «C», «D», умножьте на 3. В противном случае умножьте на 4.

mydata$y = ifelse(mydata$x3 %in% c("A","B"), mydata$x1*2,
                  ifelse(mydata$x3 %in% c("C","D"), mydata$x1*3,
                         моиданные$x1*4))
 

Вы ненавидите указывать фрейм данных несколько раз для каждой переменной?

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

mydata$y = with(mydata, ifelse(x3 %in% c("A","B") , x1*2,
                  ifelse(x3 %in% c("C","D"), x1*3, x1*4)))
 

Специальные темы, связанные с IF ELSE

В этом разделе мы рассмотрим следующие темы -

  1. Как обрабатывать отсутствующие (NA) значения в IF ELSE.
  2. Как использовать операторы ИЛИ и И в IF ELSE
  3. Агрегированные или сводные функции и оператор IF ELSE

Обработка отсутствующих значений

Неверный метод

x = NA
ifelse(x==NA,1,0)

Результат:  NA
Должно было быть возвращено 1.

Правильный метод  901 58

х = нет данных
ifelse( is.na(x) ,1,0)

Результат: 1
Функция is. na() проверяет, является ли значение NA или нет.

Использование операторов ИЛИ и И

Символ & используется для выполнения условий И

ifelse(mydata$x1<10 & mydata$x2>150,1,0)

Результат:  0 1 0 1 1 0 0 0 0 0

| символ используется для выполнения условий ИЛИ

ifelse(mydata$x1<10 | mydata$x2>150,1,0)

Результат: 1 1 1 1 1 0 0 1 1 0

Подсчет случаев, когда условие выполняется 900 11

В этом примере , мы можем подсчитать количество записей, в которых выполняется условие.

sum(ifelse(mydata$x1<10 | mydata$x2>150,1,0))

Результат: 7

Оператор If Else: Другой стиль

Есть еще один способ определить if.. оператор else в R. Этот стиль написания If Else в основном используется, когда мы используем условные операторы в циклах и функциях R. Другими словами, он используется, когда нам нужно выполнить различные действия на основе условия.

Синтаксис -

если (состояние) да иначе нет
k = 99
if(k > 100) 1 else 0

Результат: 0
If..Else If..Else Операторы

k = 100
if (k > 100){
  print("Больше 100")
} else if (k < 100){
  print("Меньше 100")
} else 9 0199 {
печать ("Равно 100")
}

Результат: "Равно 100"

If Else в популярных пакетах

1. dplyr package

if_else( условие, значение, если условие истинно, значение, если условие ложно, значение, если нет данных)

Следующая программа проверяет, является ли значение кратным 2

библиотека (dplyr)
х=с(1,Н/Д,2,3)
if_else(x%%2==0, "Кратно 2", "Не кратно 2", "Отсутствует")
 
  Результат : 
Не кратное 2
Отсутствующий
Кратность 2
Не кратное 2
 

Символ %% возвращает остаток после деления значения на делитель.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *