Файл: Решение Загрузим набор данных present с помощью команды source, для этого введем в командную строку следующую команду.docx
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 11.01.2024
Просмотров: 31
Скачиваний: 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 году.
-
Задание №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