# Циклы

for(i in 2020:2026){
  print(paste('The year is', i, sep = ' - '))
}

head(mtcars)

# Создать новый столбец, который будет содержать номер строки, возведенной в квадрат

mt <- mtcars
head(mt)

for(i in 1:nrow(mt)){
  mt$new[i] <- i^2
}
head(mt)
tail(mt)

# Создать новый столбец, который будет содержать even для четных строк и odd для нечетных

for(i in 1:nrow(mt)){
  if((i %% 2) == 0){
    mt$type[i] <- 'even'
  }
  else{
    mt$type[i] <- 'odd'
  }
}
mt

# Конструкция ifelse - всегда используем, когда есть условие на 2 варианта

v <- 1:10
ifelse(v %% 2 == 1, 'odd', 'even')

# tidyverse

library(tidyverse)

head(iris)
as_tibble(iris)

tidyverse_packages()

# Фильтрация по столбцам 

head(starwars)
starwars

filter(starwars, height > 150) # рост выше 150
filter(starwars, height > 150, eye_color == 'yellow') # рост выше 150 И желтые глаза

# Выбор столбцов

select(starwars, 1:3) # Выбрать столбцы с первого по третий
select(starwars, name, height, mass) # Выбрать столбцы с именами name, height, mass

select(starwars, name:mass) # Выбрать все столбцы, которые находятся между столбцами name и mass, включая их самих

# Конвейер %>% Его нужно использовать, можно сочетать что угодно

starwars %>% 
#  head(3) %>% 
  filter(height > 150, eye_color == 'yellow') %>% # filter rows by height
#  select(name:mass) %>%
  select(starts_with('s')) %>% 
  slice(1:4)


