Подсмотреть код (но лучше решите сами!)
c(2, 20, 100)[1] 2 20 100
2, 20, 100.c(2, 20, 100)[1] 2 20 100
-20 до 20 с шагом 1.-20:20 [1] -20 -19 -18 -17 -16 -15 -14 -13 -12 -11 -10 -9 -8 -7 -6 -5 -4 -3 -2
[20] -1 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
[39] 18 19 20
0 до 1 с шагом 0.01.seq(0, 1, .01) [1] 0.00 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.10 0.11 0.12 0.13 0.14
[16] 0.15 0.16 0.17 0.18 0.19 0.20 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29
[31] 0.30 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.40 0.41 0.42 0.43 0.44
[46] 0.45 0.46 0.47 0.48 0.49 0.50 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59
[61] 0.60 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.70 0.71 0.72 0.73 0.74
[76] 0.75 0.76 0.77 0.78 0.79 0.80 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89
[91] 0.90 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.00
1 и 2 будут попеременно повторяться 10 раз.rep(c(1, 2), 10) [1] 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2
v.v <- c(100, 3, 10, 15, 20, 30, -3, 4, 80, 20, 21)
v [1] 100 3 10 15 20 30 -3 4 80 20 21
v БОЛЬШЕ 20?sum(v > 20)[1] 4
v БОЛЬШЕ ИЛИ РАВНО 20?sum(v >= 20)[1] 6
v все значения, которые БОЛЬШЕ ИЛИ РАВНЫ 20.v[v >= 20][1] 100 20 30 80 20 21
v все значения, которые БОЛЬШЕ ИЛИ РАВНЫ 20, но МЕНЬШЕ 50.v[v >= 20 & v < 50][1] 20 30 20 21
v. Если значение в векторе v БОЛЬШЕ ИЛИ РАВНО 20, то в строковом векторе на соответствующей позиции должно быть значение "большое число", если меньше – "маленькое число".ifelse(v >= 20, "большое число", "маленькое число") [1] "большое число" "маленькое число" "маленькое число" "маленькое число"
[5] "большое число" "большое число" "маленькое число" "маленькое число"
[9] "большое число" "большое число" "большое число"
numb.numb <- 3 ^ 20
numb[1] 3486784401
what_is_it(), которая будет возвращать текстом содержание переменной на входе, добавив перед этим текст "В аргумент функции вы подали значение". Проверьте на переменной numb.Дополнительно: проверьте на других значениях с разными типами данных.
what_is_it <- function(x) paste("В аргумент функции вы подали значение", x)what_is_it(numb)[1] "В аргумент функции вы подали значение 3486784401"
Как вы думаете, будет ли ваша функция векторизованной? Почему? Проверьте свое предположение.
what_is_it_with_type(), которая будет возвращать не только значение, но и тип данных (функция typeof()). Проверьте на переменной numb.what_is_it_with_type <- function(x) paste("В аргумент функции вы подали значение", x, "типа", typeof(x))what_is_it_with_type(numb)[1] "В аргумент функции вы подали значение 3486784401 типа double"
library(tidyverse)
penguins <- readr::read_csv("https://raw.githubusercontent.com/Pozdniakov/tidy_stats/master/data/penguins.csv")penguins# A tibble: 344 × 8
species island bill_length_mm bill_depth_mm flipper_length_mm body_mass_g
<chr> <chr> <dbl> <dbl> <dbl> <dbl>
1 Adelie Torgersen 39.1 18.7 181 3750
2 Adelie Torgersen 39.5 17.4 186 3800
3 Adelie Torgersen 40.3 18 195 3250
4 Adelie Torgersen NA NA NA NA
5 Adelie Torgersen 36.7 19.3 193 3450
6 Adelie Torgersen 39.3 20.6 190 3650
7 Adelie Torgersen 38.9 17.8 181 3625
8 Adelie Torgersen 39.2 19.6 195 4675
9 Adelie Torgersen 34.1 18.1 193 3475
10 Adelie Torgersen 42 20.2 190 4250
# ℹ 334 more rows
# ℹ 2 more variables: sex <chr>, year <dbl>
1, 10 и 100 строчку.penguins %>%
slice(1, 10, 100)# A tibble: 3 × 8
species island bill_length_mm bill_depth_mm flipper_length_mm body_mass_g
<chr> <chr> <dbl> <dbl> <dbl> <dbl>
1 Adelie Torgersen 39.1 18.7 181 3750
2 Adelie Torgersen 42 20.2 190 4250
3 Adelie Dream 43.2 18.5 192 4100
# ℹ 2 more variables: sex <chr>, year <dbl>
"Dream".penguins %>%
filter(island == "Dream")# A tibble: 124 × 8
species island bill_length_mm bill_depth_mm flipper_length_mm body_mass_g
<chr> <chr> <dbl> <dbl> <dbl> <dbl>
1 Adelie Dream 39.5 16.7 178 3250
2 Adelie Dream 37.2 18.1 178 3900
3 Adelie Dream 39.5 17.8 188 3300
4 Adelie Dream 40.9 18.9 184 3900
5 Adelie Dream 36.4 17 195 3325
6 Adelie Dream 39.2 21.1 196 4150
7 Adelie Dream 38.8 20 190 3950
8 Adelie Dream 42.2 18.5 180 3550
9 Adelie Dream 37.6 19.3 181 3300
10 Adelie Dream 39.8 19.1 184 4650
# ℹ 114 more rows
# ℹ 2 more variables: sex <chr>, year <dbl>
5000 грамм:penguins %>%
filter(body_mass_g > 5000)# A tibble: 61 × 8
species island bill_length_mm bill_depth_mm flipper_length_mm body_mass_g
<chr> <chr> <dbl> <dbl> <dbl> <dbl>
1 Gentoo Biscoe 50 16.3 230 5700
2 Gentoo Biscoe 50 15.2 218 5700
3 Gentoo Biscoe 47.6 14.5 215 5400
4 Gentoo Biscoe 46.7 15.3 219 5200
5 Gentoo Biscoe 46.8 15.4 215 5150
6 Gentoo Biscoe 49 16.1 216 5550
7 Gentoo Biscoe 48.4 14.6 213 5850
8 Gentoo Biscoe 49.3 15.7 217 5850
9 Gentoo Biscoe 49.2 15.2 221 6300
10 Gentoo Biscoe 48.7 15.1 222 5350
# ℹ 51 more rows
# ℹ 2 more variables: sex <chr>, year <dbl>
P.S. Внимательно: здесь есть NA!
penguins %>%
filter(body_mass_g > mean(body_mass_g, na.rm = TRUE))# A tibble: 149 × 8
species island bill_length_mm bill_depth_mm flipper_length_mm body_mass_g
<chr> <chr> <dbl> <dbl> <dbl> <dbl>
1 Adelie Torgersen 39.2 19.6 195 4675
2 Adelie Torgersen 42 20.2 190 4250
3 Adelie Torgersen 34.6 21.1 198 4400
4 Adelie Torgersen 42.5 20.7 197 4500
5 Adelie Dream 39.8 19.1 184 4650
6 Adelie Dream 44.1 19.7 196 4400
7 Adelie Dream 39.6 18.8 190 4600
8 Adelie Biscoe 40.1 18.9 188 4300
9 Adelie Biscoe 41.3 21.1 195 4400
10 Adelie Torgersen 41.8 19.4 198 4450
# ℹ 139 more rows
# ℹ 2 more variables: sex <chr>, year <dbl>
5 случайных строчек из penguins (естественно, в этом задании результаты будут отличаться)set.seed(42)
penguins %>%
slice_sample(n = 5)# A tibble: 5 × 8
species island bill_length_mm bill_depth_mm flipper_length_mm body_mass_g
<chr> <chr> <dbl> <dbl> <dbl> <dbl>
1 Adelie Dream 36 17.9 190 3450
2 Chinstrap Dream 50.9 17.9 196 3675
3 Gentoo Biscoe 46.1 13.2 211 4500
4 Adelie Torgersen 45.8 18.9 197 4150
5 Gentoo Biscoe 48.6 16 230 5800
# ℹ 2 more variables: sex <chr>, year <dbl>
penguins (не перезаписывая переменную penguins, просто верните в консоль), в которых содержится хотя бы один NA.penguins %>%
drop_na()# A tibble: 333 × 8
species island bill_length_mm bill_depth_mm flipper_length_mm body_mass_g
<chr> <chr> <dbl> <dbl> <dbl> <dbl>
1 Adelie Torgersen 39.1 18.7 181 3750
2 Adelie Torgersen 39.5 17.4 186 3800
3 Adelie Torgersen 40.3 18 195 3250
4 Adelie Torgersen 36.7 19.3 193 3450
5 Adelie Torgersen 39.3 20.6 190 3650
6 Adelie Torgersen 38.9 17.8 181 3625
7 Adelie Torgersen 39.2 19.6 195 4675
8 Adelie Torgersen 41.1 17.6 182 3200
9 Adelie Torgersen 38.6 21.2 191 3800
10 Adelie Torgersen 34.6 21.1 198 4400
# ℹ 323 more rows
# ℹ 2 more variables: sex <chr>, year <dbl>
penguins следующие колонки: species, sex, body_mass_g.penguins %>%
select(species, sex, body_mass_g)# A tibble: 344 × 3
species sex body_mass_g
<chr> <chr> <dbl>
1 Adelie male 3750
2 Adelie female 3800
3 Adelie female 3250
4 Adelie <NA> NA
5 Adelie female 3450
6 Adelie male 3650
7 Adelie female 3625
8 Adelie male 4675
9 Adelie <NA> 3475
10 Adelie <NA> 4250
# ℹ 334 more rows
penguins только числовые колонки:penguins %>%
select(where(is.numeric))# A tibble: 344 × 5
bill_length_mm bill_depth_mm flipper_length_mm body_mass_g year
<dbl> <dbl> <dbl> <dbl> <dbl>
1 39.1 18.7 181 3750 2007
2 39.5 17.4 186 3800 2007
3 40.3 18 195 3250 2007
4 NA NA NA NA 2007
5 36.7 19.3 193 3450 2007
6 39.3 20.6 190 3650 2007
7 38.9 17.8 181 3625 2007
8 39.2 19.6 195 4675 2007
9 34.1 18.1 193 3475 2007
10 42 20.2 190 4250 2007
# ℹ 334 more rows
penguins только строковые колонки:penguins %>%
select(where(is.character))# A tibble: 344 × 3
species island sex
<chr> <chr> <chr>
1 Adelie Torgersen male
2 Adelie Torgersen female
3 Adelie Torgersen female
4 Adelie Torgersen <NA>
5 Adelie Torgersen female
6 Adelie Torgersen male
7 Adelie Torgersen female
8 Adelie Torgersen male
9 Adelie Torgersen <NA>
10 Adelie Torgersen <NA>
# ℹ 334 more rows
bill_length_mm.penguins %>%
arrange(bill_length_mm)# A tibble: 344 × 8
species island bill_length_mm bill_depth_mm flipper_length_mm body_mass_g
<chr> <chr> <dbl> <dbl> <dbl> <dbl>
1 Adelie Dream 32.1 15.5 188 3050
2 Adelie Dream 33.1 16.1 178 2900
3 Adelie Torgersen 33.5 19 190 3600
4 Adelie Dream 34 17.1 185 3400
5 Adelie Torgersen 34.1 18.1 193 3475
6 Adelie Torgersen 34.4 18.4 184 3325
7 Adelie Biscoe 34.5 18.1 187 2900
8 Adelie Torgersen 34.6 21.1 198 4400
9 Adelie Torgersen 34.6 17.2 189 3200
10 Adelie Biscoe 35 17.9 190 3450
# ℹ 334 more rows
# ℹ 2 more variables: sex <chr>, year <dbl>
bill_length_mm.penguins %>%
arrange(desc(bill_length_mm))# A tibble: 344 × 8
species island bill_length_mm bill_depth_mm flipper_length_mm body_mass_g
<chr> <chr> <dbl> <dbl> <dbl> <dbl>
1 Gentoo Biscoe 59.6 17 230 6050
2 Chinstrap Dream 58 17.8 181 3700
3 Gentoo Biscoe 55.9 17 228 5600
4 Chinstrap Dream 55.8 19.8 207 4000
5 Gentoo Biscoe 55.1 16 230 5850
6 Gentoo Biscoe 54.3 15.7 231 5650
7 Chinstrap Dream 54.2 20.8 201 4300
8 Chinstrap Dream 53.5 19.9 205 4500
9 Gentoo Biscoe 53.4 15.8 219 5500
10 Chinstrap Dream 52.8 20 205 4550
# ℹ 334 more rows
# ℹ 2 more variables: sex <chr>, year <dbl>
Сколько пингвинов в penguins по ВИДАМ (species)?
penguins %>%
count(species)# A tibble: 3 × 2
species n
<chr> <int>
1 Adelie 152
2 Chinstrap 68
3 Gentoo 124
Сколько пингвинов в penguins по ВИДАМ (species) и ОСТРОВАМ (island)?
penguins %>%
count(species, island)# A tibble: 5 × 3
species island n
<chr> <chr> <int>
1 Adelie Biscoe 44
2 Adelie Dream 56
3 Adelie Torgersen 52
4 Chinstrap Dream 68
5 Gentoo Biscoe 124
Посчитайте среднюю массу пингвинов по ПОЛУ (sex). Не забывайте, что в body_mass_g есть NA!
penguins %>%
group_by(sex) %>%
summarise(mean_body_mass_g = mean(body_mass_g, na.rm = TRUE))# A tibble: 3 × 2
sex mean_body_mass_g
<chr> <dbl>
1 female 3862.
2 male 4546.
3 <NA> 4006.
sex) и ОСТРОВУ (island).penguins %>%
group_by(sex, island) %>%
summarise(mean_body_mass_g = mean(body_mass_g, na.rm = TRUE))`summarise()` has grouped output by 'sex'. You can override using the `.groups`
argument.
# A tibble: 9 × 3
# Groups: sex [3]
sex island mean_body_mass_g
<chr> <chr> <dbl>
1 female Biscoe 4319.
2 female Dream 3446.
3 female Torgersen 3396.
4 male Biscoe 5105.
5 male Dream 3987.
6 male Torgersen 4035.
7 <NA> Biscoe 4588.
8 <NA> Dream 2975
9 <NA> Torgersen 3681.
penguins %>%
group_by(sex, island) %>%
summarise(mean_body_mass_g = mean(body_mass_g, na.rm = TRUE)) %>%
pivot_wider(names_from = island, values_from = mean_body_mass_g)`summarise()` has grouped output by 'sex'. You can override using the `.groups`
argument.
# A tibble: 3 × 4
# Groups: sex [3]
sex Biscoe Dream Torgersen
<chr> <dbl> <dbl> <dbl>
1 female 4319. 3446. 3396.
2 male 5105. 3987. 4035.
3 <NA> 4588. 2975 3681.
penguins %>%
group_by(sex, island) %>%
summarise(mean_body_mass_g = mean(body_mass_g, na.rm = TRUE)) %>%
pivot_wider(names_from = sex, values_from = mean_body_mass_g)`summarise()` has grouped output by 'sex'. You can override using the `.groups`
argument.
# A tibble: 3 × 4
island female male `NA`
<chr> <dbl> <dbl> <dbl>
1 Biscoe 4319. 5105. 4588.
2 Dream 3446. 3987. 2975
3 Torgersen 3396. 4035. 3681.