Файл: Решение Загрузим набор данных present с помощью команды source, для этого введем в командную строку следующую команду.docx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 11.01.2024

Просмотров: 31

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
  1. Задание №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 году.
  1. Задание №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 штук.
  1. Задание №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