Карен Аванесян
Апрель 2018, Ростов-на-Дону
R поддерживает огромное количество форматов данны, однако для их чтения необходимо устанавливать и загружать дополнительные пакеты. Для чтения файлов в формате spss (sav) необходим пакет haven.
install.packages("haven", dependencies = TRUE) #устанавливает пакет, а благодаря аргументу dependencies=T также другие пакеты, необходимые для корректной работы требуемой библиотеки.
После того как библиотека установлена, для каждой сессии ее необходимо загружать. Это делается следующей командой:
library(haven)
Для получения справки по документации библиотеки с перечнем всех доступных функций можно вызвать следующую команду:
help(package = "haven")
Также можно получить справку по отдельной команде и спецификации аргументов в ней:
help("read_sav")
?read_sav #делает то же самое
Можно также вызвать стартовую страницу справки для дальнейшей самостоятельной навигации
help.start()
Загрузим базу PISA по Ростовской области за 2015 год. Она находится по следующей ссылке: https://github.com/karavan88/sfedu/blob/master/Pisa_Rostov.sav Файл необходимо сохранить в рабочую папку (чаще всего, папка R в “Мои документы”)
df <- read_sav("Pisa_Rostov.sav")
R теперь запомнил данный объект под именем df.
View(df) #откроет полностью базу данных в отдельной вкладке
Как видно, текущая база данных содержит слишком большое количество переменных. Для удобства работы, мы можем отобрать релевантные для нас.
variables <- c("ST004D01T", "ST011Q03TA", "ST012Q06NA", "ST123Q01NA", "ST118Q04NA", "ST119Q03NA", "ST071Q01NA", "ST071Q02NA", "ST071Q03NA", "ST071Q04NA", "ST071Q05NA" )
pisarostov <- subset(df, select = variables)
summary(pisarostov)
Как видно, с базой данных еще необходимо работать.
Переименуем переменные для удобства
colnames(pisarostov) <- c("Gender", "Study_Place_Home", "PCs_home", "Parents_Interest", "tension", "leadership", "add_learning_science", "add_learning_math", "add_learning_lang", "add_learnin_foreign_lang", "add_learning_other")
View(pisarostov)
Теперь необходимо перекодировать количественные переменные в качественные
pisarostov$Gender <- factor(pisarostov$Gender, labels = c("female", "male"), levels = c(1,2))
pisarostov$tension <- factor(pisarostov$tension, labels = c("strongly disagree", "disagree", "agree", "strongly agree"), levels = c(1,2,3,4))
pisarostov$leadership <- factor(pisarostov$leadership, labels = c("strongly disagree", "disagree", "agree", "strongly agree"), levels = c(1,2,3,4))
Для бивариативного представления качественных переменных удобно строить таблицы.
table(pisarostov$Gender, pisarostov$leadership)
strongly disagree disagree agree strongly agree
female 0 4 9 5
male 0 4 6 1
Таблица может быть улучшена:
table(Gender = pisarostov$Gender, "I get very tense when I study for a test" = pisarostov$leadership)
I get very tense when I study for a test
Gender strongly disagree disagree agree strongly agree
female 0 4 9 5
male 0 4 6 1
Для эстетически более привлекательных визуализаций необходимо установить и загрузить спецаильный пакет
install.packages("sjPlot", dependencies = TRUE)
library(sjPlot)
sjt.frq(pisarostov$Gender)
| value | N | raw % | valid % | cumulative % |
|---|---|---|---|---|
| female | 18 | 58.06 | 58.06 | 58.06 |
| male | 13 | 41.94 | 41.94 | 100.00 |
| missings | 0 | 0.00 | ||
| total N=31 · valid N=31 · x̄=1.42 · σ=0.50 | ||||
То же самое применимо к бивариативным отношениям между переменными
sjt.xtab(pisarostov$Gender, pisarostov$leadership, show.row.prc = TRUE, show.obs = FALSE)
| Gender | leadership | Total | |||
|---|---|---|---|---|---|
| strongly disagree | disagree | agree | strongly agree | ||
| female | 0 % | 22.2 % | 50 % | 27.8 % | 100 % |
| male | 0 % | 36.4 % | 54.5 % | 9.1 % | 100 % |
| Total | 0 % | 27.6 % | 51.7 % | 20.7 % | 100 % | χ2=NaN · df=3 · Cramer’s V=NaN · Fisher’s p=0.445 |
Самым простым способом получения информации о количественной переменной является команда
summary(pisarostov$add_learning_math)
Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
1.00 6.00 7.50 10.19 10.00 30.00 5
Единичными командами можно также получить среднее и среднеквадратическое отклонение
mean(pisarostov$add_learning_science, na.rm = TRUE) #второй аргумент не учитывает в расчете среднего пропущенные значения (NAs), наличие которых делает исполнение команды невозможной
[1] 10.30769
sd(pisarostov$add_learning_science, na.rm = TRUE)
[1] 7.968785
На основе имеющихся переменных можно высчитать новую. В данных PISA по Ростовской области нам может быть интересно знать, сколько в целом школьники тратят часов на дополнительное обучение вне школы по всем предметам. Сохраним это значение как переменную в данных
pisarostov$add_learning_total <- pisarostov$add_learnin_foreign_lang + pisarostov$add_learning_science + pisarostov$add_learning_math + pisarostov$add_learnin_foreign_lang + pisarostov$add_learning_other
summary(pisarostov$add_learning_total)
Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
14.00 24.50 42.00 53.58 71.75 150.00 7