-
Задание №1
Задание: Используя фреймы present, вычислите абсолютные различия между количеством мальчиков и девочек, родившихся в каждом году, и определите, в каком году самая большая абсолютная разница в количествах новорожденных девочек и мальчиков. Решение: Загрузим набор данных present с помощью команды source, для этого введем в командную строку следующую команду: > source(http://www.openintro.org/stat/data/present.R)Далее вычислим абсолютную разницу между количеством мальчиков и девочек, родившихся в каждом году, для этого в командную строку введем следующую команду: > present$boys – present$girlsРезультат выполнения команды представлен на рисунке 1. Рисунок 1 – Абсолютную разницу между количеством мальчиков и девочек, родившихся в каждом году.Теперь определим в каком году самая большая абсолютная разница в количествах новорожденных девочек и мальчиков, для этого создадим новую таблицу t3 методом data.table. Чтобы создать таблицу t3, создадим две новые переменны t1 и t2, в переменной t1 хранятся года, а в переменной t2 разницу между количеством мальчиков и девочек. Теперь создаем таблицу t3 из двух переменны t1 и t2. Выполнение команд представлены на рисунке 2. Рисунок 2 – Создание таблицы t3.Из таблицы t3 получим год, в котором самая большая абсолютная разница в количествах новорожденных девочек и мальчиков. Введем в командную строку следующую команду: > t3(which.max(t3$t2)После выполнения команды получаем строку из таблицы t3 в которой указан год и абсолютная разница в количествах новорожденных девочек и мальчиков. Результат выполнения команды показан на рисунке 3.Рисунок 3 – Год, в котором самая большая абсолютная разница в количествах новорожденных девочек и мальчиков.
Ответ: Самая большая абсолютная разница в количествах новорожденных девочек и мальчиков была в 1963 году.
-
Задание №2
Исходные данные: Загрузите XML данные о ресторанах Балтимора в переменную res, пройдя по ссылке: https://d396qusza40orc.cloudfront.net/getdata%2Fdata%2Frestaurants.xmlЗадача:Сколько ресторанов описано в загруженных данных? В переменную zip прочитайте все zipcode. Подсчитайте число ресторанов с zipcode = 21218?Решение:Выгрузим данные о ресторанах в переменную res, для этого введем в командную строку следующие команды: > require(RCurl)> require(XML)> url = “https://d396qusza40orc.cloudfront.net/getdata%2Fdata%2Frestaurants.xml”> source = getURL(url, encoding = “UTF -8”)Далее произведем парсинг полученных XML данных, для этого введем в командную строку следующие команды: > res <- htmlParse(substring(source,1)После выполнения команды получим количество ресторанов в Балтиморе, для этого введем в командную строку следующую команду:> xpathSApply(res, “//name,” xmlValue)Получим 1327 ресторанов, которые находятся в Балтиморе. Запишем в перемнную zip все zipcode ресторанов. Для этого выполним следующую команду в командной строке: > zip <- xpathSApply(res, “//zipcode,” xmlValue)Теперь получим количество zipcod = 21218. В командную строку пишем следующую команду: > n <- grep(“21218”, zip)Получаем 69 ресторанов, у которых zipcode = 21218. Результат выполнения работы показан на рисунке 4.Рисунок 4 – Результат выполнения работы.Ответ: В Балтиморе находится 1327 ресторанов. Ресторанов с zipcode = 21218 в Балтиморе 69 штук.
-
Задание №3
Задание: Создать веб приложение Shiny с заголовком «Вэб юмор!», использующие на «Боковой панели» виджет «Числовой ввод». При вводе номера комикса приложение в «Основной панели» должно соответствующий комикс с сайта http://xkcd.com/.Решение: Код вэб приложения Shiny, которое показывает комиксы представлен ниже: # Подключаем необходимые библиотеки ----library(shiny)library(RCurl)library(XML)require(RCurl)require(XML)ui <- fluidPage(titlePanel("Вэб юмор!"),sidebarLayout(sidebarPanel(# Настраиваем виджет ----numericInput(inputId ="number", label = h3("Введите номер комикса"),value = 10)),mainPanel(# Рендер получаемых данных на основной панели ----htmlOutput(outputId = "imageURL"))))server <- function(input, output) {output$imageURL <- renderText({# Получаем номер комикса ----img <- input$number# Формируем ссылку ----url <- paste("https://xkcd.com/",img,"/")url1 <- gsub(' ', '', url)# Парсим данные с сайта ----
getSite <- getURL(url1)parsed <- htmlParse(substring(getSite,1))# Поулчаем ссылку на картинку с комиксом ----src <- xpathSApply(parsed, "//a[contains(@href,'/comics/')]", xmlValue)name <- xpathSApply(parsed, "//div[@id='ctitle']", xmlValue)# Рендерим картинку ----c('
',name,'
','')})}shinyApp(ui = ui, server = server)Чтобы запустить вэб приложение Shiny введите в консоли следующие команды:> library(shiny)> runExample("01_hello")При вводе числа в «Боковой панели» получаем ссылку на соответствующий комикс. Результаты выполнения программы представлены на рисунке 5 и рисунке 6. Рисунок 5 – Результат выполнения программы ShinyРисунок 6 – Результат выполнения программы Shiny