Подсмотреть код (но лучше решите сами!)
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
.<- c(100, 3, 10, 15, 20, 30, -3, 4, 80, 20, 21)
v 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
.>= 20] v[v
[1] 100 20 30 80 20 21
v
все значения, которые БОЛЬШЕ ИЛИ РАВНЫ 20
, но МЕНЬШЕ 50
.>= 20 & v < 50] v[v
[1] 20 30 20 21
v
. Если значение в векторе v
БОЛЬШЕ ИЛИ РАВНО 20
, то в строковом векторе на соответствующей позиции должно быть значение "большое число"
, если меньше – "маленькое число"
.ifelse(v >= 20, "большое число", "маленькое число")
[1] "большое число" "маленькое число" "маленькое число" "маленькое число"
[5] "большое число" "большое число" "маленькое число" "маленькое число"
[9] "большое число" "большое число" "большое число"
numb
.<- 3 ^ 20
numb numb
[1] 3486784401
what_is_it()
, которая будет возвращать текстом содержание переменной на входе, добавив перед этим текст "В аргумент функции вы подали значение"
. Проверьте на переменной numb
.Дополнительно: проверьте на других значениях с разными типами данных.
<- function(x) paste("В аргумент функции вы подали значение", x) what_is_it
what_is_it(numb)
[1] "В аргумент функции вы подали значение 3486784401"
Как вы думаете, будет ли ваша функция векторизованной? Почему? Проверьте свое предположение.
what_is_it_with_type()
, которая будет возвращать не только значение, но и тип данных (функция typeof()
). Проверьте на переменной numb
.<- function(x) paste("В аргумент функции вы подали значение", x, "типа", typeof(x)) what_is_it_with_type
what_is_it_with_type(numb)
[1] "В аргумент функции вы подали значение 3486784401 типа double"
library(tidyverse)
<- readr::read_csv("https://raw.githubusercontent.com/Pozdniakov/tidy_stats/master/data/penguins.csv") penguins
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.