Импорт донных для заданий

  girls.textdata= 
  "row.name|name|age|hobby|height
  g1|Лена|19|лыжи|166
  g2|Жанна|22|вышивка|156,5
  g3|Даша|29|лыжи|180
  g4|Ира|26|танцы|170 
  g5|Зина|16|танцы|160" 
girls <- read.delim(header=T,
  sep="|" , dec = ",",
  text= girls.textdata,
  row.names = 1, 
  stringsAsFactors = F
  )
boys.textdata= 
  "row.name|name|age|hobby|height
  b1|Гена|19|лыжи|188
  b2|Женя|32|мотоцикл|166,5
  b3|Саша|29|лыжи|180
  b4|Дима|26|танцы|170" 
boys <- read.delim(header=T,
  sep="|" , dec = ",",
  text= boys.textdata,
  row.names = 1, 
  stringsAsFactors = F
  )
url_world_data <- "http://crow.academy.ru/~ikocherg/stud_do/2015vesna/world.txt.zip"
download.file(url_world_data,destfile = "data/world.txt.zip")
unzip("data/world.txt.zip",exdir = "data")
city <- read.csv2("data/city.txt",as.is=T)
country <- read.csv2("data/country.txt",as.is=T)

Шпаргалка по пакету находится в разделе шпаргалок RStudio под именем Data Wrangling Cheat Sheet

library(dplyr)

Преобразуем фреймы данных в усовершенстованные (local data frame), которые поддерживает пакет dplyr.

city_t <- tbl_df(city)
country_t <- tbl_df(country)

Загруженные таблицы

База world

city_t
## Source: local data frame [4,079 x 5]
## 
##    CityID           Name CountryCode      District Population
##     (int)          (chr)       (chr)         (chr)      (int)
## 1       1          Kabul         AFG         Kabol    1780000
## 2       2       Qandahar         AFG      Qandahar     237500
## 3       3          Herat         AFG         Herat     186800
## 4       4 Mazar-e-Sharif         AFG         Balkh     127800
## 5       5      Amsterdam         NLD Noord-Holland     731200
## 6       6      Rotterdam         NLD  Zuid-Holland     593321
## 7       7           Haag         NLD  Zuid-Holland     440900
## 8       8        Utrecht         NLD       Utrecht     234323
## 9       9      Eindhoven         NLD Noord-Brabant     201843
## 10     10        Tilburg         NLD Noord-Brabant     193238
## ..    ...            ...         ...           ...        ...
country_t
## Source: local data frame [239 x 15]
## 
##    CountryCode                 Name     Continent
##          (chr)                (chr)         (chr)
## 1          ABW                Aruba North America
## 2          AFG          Afghanistan          Asia
## 3          AGO               Angola        Africa
## 4          AIA             Anguilla North America
## 5          ALB              Albania        Europe
## 6          AND              Andorra        Europe
## 7          ANT Netherlands Antilles North America
## 8          ARE United Arab Emirates          Asia
## 9          ARG            Argentina South America
## 10         ARM              Armenia          Asia
## ..         ...                  ...           ...
## Variables not shown: Region (chr), SurfaceArea (dbl), IndepYear (int),
##   Population (int), LifeExpectancy (dbl), GNP (dbl), GNPOld (dbl),
##   LocalName (chr), GovernmentForm (chr), HeadOfState (chr), Capital (int),
##   Code2 (chr)

База бабушек у подъезда

girls
##       name age   hobby height
##   g1  Лена  19    лыжи  166.0
##   g2 Жанна  22 вышивка  156.5
##   g3  Даша  29    лыжи  180.0
##   g4   Ира  26   танцы  170.0
##   g5  Зина  16   танцы  160.0
boys
##      name age    hobby height
##   b1 Гена  19     лыжи  188.0
##   b2 Женя  32 мотоцикл  166.5
##   b3 Саша  29     лыжи  180.0
##   b4 Дима  26    танцы  170.0

Практические задания

Задание 1 Бабушки на лавочки у подъезда хотят обсудить возможные пары девочек и мальчиков из их подъезда. Они решили рассмотреть пары с общими хобби и добавили еще дополнительные фильтры : разница в возрасте не должна превышать 6 лет и выстота девушки должна быть строго меньше высоты юноши. Запрос должен выдать такой результат:

##   name.x age.x hobby height.x name.y age.y height.y
## 1   Лена    19  лыжи      166   Гена    19      188

Задание 2 Показать страны, удовлетворяющие условию Region==“Baltic Countries” упорядочив их по убыванию населения (Population). Выдайте только столбцы Name, Population, SurfaceArea. Ожидаемый результат:

## Source: local data frame [3 x 3]
## 
##        Name Population SurfaceArea
##       (chr)      (int)       (dbl)
## 1 Lithuania    3698500       65301
## 2    Latvia    2424200       64589
## 3   Estonia    1439200       45227

Задание 3 Соедините таблицы city (city_t) и country (country_t) по полю CountryCode. Выдайте только информацию про те города, где население города (Population.x) больше чем количество граждан стран, в которой он расположен (Population.y). Выдайте в результат только столбцы, в имена которых содержат (containts() ) строки “Population”, “Name”. Ожидаемый результат:

## Source: local data frame [2 x 5]
## 
##   Population.x Population.y    Name.x    Name.y
##          (int)        (int)     (chr)     (chr)
## 1        27025        25000 Gibraltar Gibraltar
## 2      4017733      3567000 Singapore Singapore
## Variables not shown: LocalName (chr)

Задание 4 Узнайте, сколько крупных городов (city) на каждом континенте и сколько суммарно людей живет в городах. Ожидаемый результат:

## Source: local data frame [6 x 3]
## 
##       Continent TotalCityPopulation TotalCityCount
##           (chr)               (int)          (int)
## 1        Africa           135838579            366
## 2          Asia           697604103           1766
## 3        Europe           241942813            841
## 4 North America           168250381            581
## 5       Oceania            13886149             55
## 6 South America           172037859            470

Задание 5 ВЫдайте 5 самых больших по населению столиц Европы

## Selecting by Code2
## Source: local data frame [5 x 19]
## 
##   CityID    Name.x CountryCode.x       District Population.x CountryCode.y
##    (int)     (chr)         (chr)          (chr)        (int)         (chr)
## 1   4068    Harare           ZWE         Harare      1410000           ZWE
## 2   3162    Lusaka           ZMB         Lusaka      1317000           ZMB
## 3   1792   Beograd           YUG Central Serbia      1204000           YUG
## 4    716  Pretoria           ZAF        Gauteng       658630           ZAF
## 5   2514 Mamoutzou           MYT      Mamoutzou        12000           MYT
## Variables not shown: Name.y (chr), Continent (chr), Region (chr),
##   SurfaceArea (dbl), IndepYear (int), Population.y (int), LifeExpectancy
##   (dbl), GNP (dbl), GNPOld (dbl), LocalName (chr), GovernmentForm (chr),
##   HeadOfState (chr), Code2 (chr)