# ПРАКТИКА №1 #@Lakmania # --- Установка R и RStudio ---------------------------------------------------------------- # Примечания: # 1. Сначала ставится R, затем RStudio # 2. Не устанавливайте программы в папки `Program Files` и `Program Files (x86)` # 3. В пути установки не должно быть кириллицы # 4. После установки использовать только RStudio # 5. Сделать кодировку UTF-8 в RStudio основной: # Tools -> Global Options... -> Code -> Saving -> Раздел "Default text encoding" -> Уставносить UTF-8 и сохранить # --- Введение ----------------------------------------------------------------------------- # Присвоение значения x <- 5 # Создаст переменную "x" и даст ей значение 5 # `<-` можно быстро создать сочетанием клавиш `Alt` + `-` # Можно присваивать значения следующим образом: `x = 5`, но по стандарту лучше использовать `<-` # Разделитель целой и дробной частей "точка": 5.27, а не 5,27 # R чувствителен к регистру команд и переменных. # Например, переменные "art", "Art" и "ART" - разные # Операторы # & И # | ИЛИ # > < Больше/меньше # >= <= Больше/меньше или равно # ! Отрицание # == Равно # != Не равно # = Используется для присвоения # --- Вектора ------------------------------------------------------------------------------ # Создание вектора z <- c(5, 6, 1, 5.2) # Численный вектор w <- c("Маша", "Петя", "Вася") # Текстовый вектор q <- c(9, 6, 2, 1) # Обращение к определенным наблюдениям z[1] # Выведет первое наблюдение вектора z z[z > 5] # Выведет значения вектора z, которые больше 5 which(z > 5) # Индексы элементов вектора z, которые больше 5 # Операции с векторами (при этом желательно, чтобы длина векторов была одинаковой) z + q z - q z * q # Статистики mean(z) # Среднее sum(z) # Сумма max(z) # Максимальное значение min(z) # Минимальное значение sd(z) # Отклонение length(z) # Длина median(z) # Медиана mean(w) length(w) # --- Датафреймы --------------------------------------------------------------------------- # Таблицы в R называются датафреймами # Чаще всего анализ данных проводится именно с датафреймами # Создание датафрейма # Сделаем таблицу из 3 переменных и 4 наблюдений # Первую переменную сделаем из нового вектора и назовем его "id" # Две других переменных возьмем из созданных ранее векторов "z" и "q" df <- data.frame( id = c(1, 2, 3, 4), var1 = z, var2 = q ) # преобразование датафрейма в матрицу mm <- data.matrix(df) # для получения справки по команде достаточно написать ее название и перед ней поставить знак ? ?data.matrix # Посмотреть на датафрейм View(df) # Обращение к определенным ячейкам датафрейма df[2, 3] # Выведет значение во второй строке и третьем столбце df[2, ] # Выведет все значения второй строки df[, 3] # Выведет все значения третьей переменной # Обращение к определенным столбцам датафрейма df$id df$var1 df$var2 # --- Пакеты ------------------------------------------------------------------------------- # Пакеты позволяют значительно расширить возможно сти базового R # Загружать нужные пакеты можно разными способами: # Способ 1: Прописать команду install.packages(c("tidyverse", "rmarkdown")) # Способ 2: Tools -> Install Packages... -> в открывшемся окне перечислить необходимые пакеты через запятую # Способ 3: В правой нижней панели перейти на вкладку Packages и нажать кнопку Install. Откроется окно как в предыдущем пункте # Пакеты устанавливаются один раз # После установки их необходимо подключить командой library() # После каждого запуска RStudio пакеты надо подключать заново # Для дальнейшей работы нам также понадобятся пакеты: rmarkdown и knitr install.packages(c("rmarkdown", "knitr")) # Загрузка пакетов library(tidyverse) # Загрузка встроенные датасет VA из пакета ggplot2 data <- VA # Получить справку по набору (Функция "?" выдает окно со справкой) ?VA # Veteran's Administration lung cancer trial (данные о раке легких среди 134 пациентов) # 1. stime — время выживания или время наблюдения (в днях). # 2. status — статус пациента: умер (dead) или цензурирован (censored). # 3. treat — лечение: стандартное (standard) или экспериментальное (test). # 4. age — возраст пациента в годах. # 5. Karn — показатель Карнофского, отражающий физическое состояние пациента по шкале от 0 до 100. # 6. diag.time — время с момента постановки диагноза в месяцах на момент вступления в исследование. # 7. cell — один из четырёх типов клеток. # 8. prior — было ли лечение ранее (prior therapy: да или нет). str(data) # Структура датасета (Список переменных и их тип) head(data) # Несколько первых наблюдений head(data, n = 10) # 10 первых наблюдений. n отвечает за количество наблюдений tail(data) # Несколько последних наблюдений # ------------задание для самотстоятельной работы------------ # По встроенному набору mtcars об автомобилях: # загрузить данные, проверить корректность их загрузки, # проверить класс переменных, просмотреть структуру датафрейма, # посмотреть первые 10 и последние 10 наблюдений mt <- mtcars # Подключение пакетов library(tidyverse) library(readxl)# для работы с данными в формате Excel library(DescTools) # для описательной статистики # --- Загрузка данных ---------------------------------------------------------------------- # R позволяет загружать данных из практических всех источников данных # Основные форматы данных: .csv, .xlsx # -- CSV -- # У формата CSV (comma-separated values - значения, разделенные запятыми) существует свой стандарт # Но многие csv-файлы собраны по своим собственным правилам # Перед тем как загрузить данные в R # Откройте файл в текстовом редакторе и провеьте как собран ваш csv-файл # На что обратить внимание: # 1. Наличие заголовка в файле с названиями переменных (header) # 2. Разделитель целой и дробной частей: точка или запятая (в России чаще всего запятая) # 3. Разделитель между переменными (столбцами): пробел, табуляция, запятая, точка с запятой (в России чаще всего точка с запятой) # 4. Кодировка данных: UTF-8, CP1251, KOI8-R (старайтесь использовать UTF-8) # Стандарт csv-файлов: # - с заголовком # - разделитель целой и дробной частей: точка # - разделитель между столбцами: запятая # - кодировка UTF-8 # Эти параметры в команде загрузки данных data_csv <- read.csv( file = "название_файла.csv", header = "Наличие заголовка TRUE - есть, FALSE - нет", dec = "Разделитель целой и дробной частей: вписать здесь . или ,", sep = "Разделитель между переменными (столбцами): , (при запятой) ; (точка с запятой) \t (при табуляции)", encoding = "Кодировка файла UTF-8 и другие") # Пример файла без заголовков, # разделитель целой и дробной части запятая и между переменными точка с запятой read.csv(file = "название_файла.csv", header = FALSE, sep = ";", dec = ",") # По умолчанию R считает, что ваш файл собран по стандарту, # если у вас есть какие-то отклонения от стандарта вы можете их дописать # Например, если бы в предыдущем примере заголовок был, то header можно не прописывать read.csv(file = "название_файла.csv", sep = ";", dec = ",") # Если ваш файл сделан по стандарту, вам необходимо указать только название файла (+путь). dt <- read.csv(file = "C://Users//ILakman//Desktop//ПЦС БГУ//курс для Томска 2024//Модуль 1//Практика 2//pr2.csv", sep = ";", dec = ",") data <- read.csv(file = "pr2.csv", sep = ";", dec = ",") # У csv-файлов могут быть и другие настройки # Вы можете посмотреть их в справке ?read.csv # Другой вариант вы можете написать команду read.csv() # Поставить курсор между скобок и нажать кнопку tab # У вас высветится список возможных команд # При наведении на каждую команду вы увидите небольшую справку # для вставки комментария надо переместить курсор перед комментриуемым выражением или строчкой и нажать Ctrl+Shift+C # -- Excel -- install.packages("readxl") # Примеры library(readxl) data_xlsx <- read_excel(path = "Путь_до_эксель_файла.xlsx") # Пример загрузки данных # При необходимости загрузки определенного листа вы можете указать название или номер листа в параметре sheet data_xlsx2 <- read_excel(path = "Путь_до_эксель_файла.xlsx", sheet = "Название или номер листа") # -- Данные из других статистических пакетов: stata, SPSS, SAS -- # Для этого используется пакет "haven" install.packages("haven") # !ПРИМЕР! Не запускать library(haven) data_sas <- read_sas("test_from_sas.sas") data_spss <- read_sav("test_from_spss.sav") data_stata <- read_dta("test_from_stata.dta") # Формат загрузки во всех случаях одинаковый. Надо просто указать нужный файл # RStudio позволяет подключаться к базам данных и делать к ним запросы # Подключиться к базе данных можно через вкладку "Connections" (справа сверху) # и нажать на кнопку "New Connection" # Для разных видов БД может потребоваться свой собственный пакет # Совет: # Для большинства форматов данных существует свой пакет или команда, чтобы загрузить данные. # Для того, чтобы найти нужный пакет достаточно написать в поисковой системе "R load data from *название_формата_данных*" # У языка R обширное комьюнити, так что вы легко сможете найти всю необходимую информацию по вашему формату данных # ----------формат данных, преобразование формата данных------------------- # для просмотра формата данных конкретной переменной есть команда class (название переменной) class(data$gender) #для просмотра формата данных конкретной переменной есть команда str(название набора данных) str(data) summary(data) #для проверки относится ли переменная к конкретному типу выполняется соответствующая команда # ответ выдается в виде логического значения TRUE/FALSE (истина/ложь) is.factor(data$id) is.numeric(data$age) is.logical(data$X) # преобразование переменных (команда as.factor - в категориальную) data$gender = as.factor(data$gender) # преобразование переменных (команда as.ordered - в упорядоченную) data$edu = as.ordered(data$edu) # как создать комментарий `Ctrl` + `Shift` + `C` (нажать одновременно) # преобразование переменных (команда as.integer - в целочисленную) # df$var2 = as.integer(df$var2) q <- c(5, 3, 4, 7) # сложности при переводе из числовой в факторную и обратно q = as.factor(q) q = as.integer(q) q # как видим в новой переменной q значения 3 1 2 4, а не изначальные значения # для того, чтобы получить именно те значения, которые были изначально, надо было # сначала перевести факторную переменную в текстовую (chr), а затем в целочисленную q = as.integer(as.character(q)) q # ---------------------сохранение данных-------------------------------- # для сохранения набора данных в формате xlsx необходимо установить и подключить библиотеку writexl library(writexl) # для сохранения файла используется команда write_xlsx(), в которой сначала указывается то, что # хотим сохранить (данные), далее в ковычках имя файла для сохранения write_xlsx(cancer_NA_1, "cancer.xlsx")