Недостајуће вредности у науци података настају када запажање недостаје у колони оквира података или садржи вредност знака уместо нумеричке вредности. Вредности које недостају морају се испустити или заменити да би се из података извукао тачан закључак.
У овом упутству научићемо како се носити са недостајућим вредностима помоћу библиотеке дплир. дплир библиотека је део екосистема за реализацију анализе података.
У овом упутству ћете научити
- мутате ()
- Изузми недостајуће вредности (НА)
- Импутирајте вредности које недостају (НА) са средњом и средњом вредношћу
мутате ()
Четврти глагол у библиотеци дплир је користан за стварање нове променљиве или промену вредности постојеће променљиве.
Наставићемо из два дела. Научићемо како:
- изузети вредности које недостају из оквира података
- вредности које недостају приписати средњој и средњој вредности
Глагол мутате () је врло једноставан за употребу. Можемо створити нову променљиву следећи ову синтаксу:
mutate(df, name_variable_1 = condition,… )arguments:-df: Data frame used to create a new variable-name_variable_1: Name and the formula to create the new variable-… : No limit constraint. Possibility to create more than one variable inside mutate()
Изузми недостајуће вредности (НА)
Метода на.омит () из библиотеке дплир је једноставан начин за изузеће посматрања. Испуштање свих НА из података је лако, али не значи да је то најелегантније решење. Током анализе паметно је користити разне методе за решавање недостајућих вредности
Да бисмо се позабавили проблемом недостајућих запажања, користићемо титански скуп података. У овом скупу података имамо приступ информацијама о путницима на броду током трагедије. Овај скуп података садржи много НА о којима треба водити рачуна.
Отпремићемо цсв датотеку са Интернета и затим проверити у којим колонама је НА. Да бисмо вратили колоне са подацима који недостају, можемо користити следећи код:
Отпремимо податке и верификујмо податке који недостају.
PATH <- "https://raw.githubusercontent.com/guru99-edu/R-Programming/master/test.csv"df_titanic <- read.csv(PATH, sep = ",")# Return the column names containing missing observationslist_na <- colnames(df_titanic)[ apply(df_titanic, 2, anyNA) ]list_na
Излаз:
## [1] "age" "fare"
Ево,
colnames(df_titanic)[apply(df_titanic, 2, anyNA)]
Даје име колона које немају податке.
Вредности колона и цена немају вредности.
Можемо их испустити помоћу на.омит ().
library(dplyr)# Exclude the missing observationsdf_titanic_drop <-df_titanic %>%na.omit()dim(df_titanic_drop)
Излаз:
## [1] 1045 13
Нови скуп података садржи 1045 редова у поређењу са 1309 са оригиналним скупом података.
Унеси недостајуће податке са средњом и средњом вредношћу
Такође бисмо могли да импутирамо (попунимо) вредности које недостају са медијаном или средњом вредношћу. Добра пракса је стварање две одвојене променљиве за средњу вредност и медијану. Једном створене, вредности које недостају можемо заменити новоформираним променљивим.
Користићемо методу аппли за израчунавање средње вредности колоне са НА. Да видимо пример
Корак 1) Раније у водичу смо име колона са вредностима које недостају сачували на листи званој лист_на. Користићемо ову листу
Корак 2) Сада треба израчунати средњу вредност са аргументом на.рм = ТРУЕ. Овај аргумент је обавезан јер у колонама недостају подаци, а ово говори Р-у да их игнорише.
# Create meanaverage_missing <- apply(df_titanic[,colnames(df_titanic) %in% list_na],2,mean,na.rm = TRUE)average_missing
Објашњење кода:
У методи примене прослеђујемо 4 аргумента.
- дф: дф_титаниц [, цолнамес (дф_титаниц)% у% лист_на]. Овај код ће вратити име колона из објекта лист_на (тј. "Старост" и "цена")
- 2: Израчунајте функцију на колонама
- меан: Израчунати средњу вредност
- на.рм = ТРУЕ: Занемарите вредности које недостају
Излаз:
## age fare## 29.88113 33.29548
Успешно смо креирали средњу вредност колона које садрже запажања која недостају. Ове две вредности ће се користити за замену опажања која недостају.
Корак 3) Замените НА вредности
Мутација глагола из библиотеке дплир корисна је у стварању нове променљиве. Не желимо нужно да променимо оригинални ступац да бисмо могли да креирамо нову променљиву без НА. мутате је једноставан за употребу, ми само бирамо име променљиве и дефинишемо како да креирамо ову променљиву. Ево комплетног кода
# Create a new variable with the mean and mediandf_titanic_replace <- df_titanic %>%mutate(replace_mean_age = ifelse(is.na(age), average_missing[1], age),replace_mean_fare = ifelse(is.na(fare), average_missing[2], fare))
Објашњење кода:
Креирамо две променљиве, реплаце_меан_аге и реплаце_меан_фаре на следећи начин:
- реплаце_меан_аге = ифелсе (ис.на (старост), просечно_ недостаје [1], старост)
- реплаце_меан_фаре = ифелсе (ис.на (цена), просечна_нема [2], цена)
Ако старости колоне недостају вредности, онда је замените првим елементом просечне_минисања (средња вредност старости), у супротном задржите изворне вредности. Иста логика за карту
sum(is.na(df_titanic_replace$age))
Излаз:
## [1] 263
Извршите замену
sum(is.na(df_titanic_replace$replace_mean_age))
Излаз:
## [1] 0
Изворној старости колоне недостају 263 вредности, док их је новостворена променљива заменила средњом вредност променљиве старости.
Корак 4) Опажања која недостају можемо заменити и медијаном.
median_missing <- apply(df_titanic[,colnames(df_titanic) %in% list_na],2,median,na.rm = TRUE)df_titanic_replace <- df_titanic %>%mutate(replace_median_age = ifelse(is.na(age), median_missing[1], age),replace_median_fare = ifelse(is.na(fare), median_missing[2], fare))head(df_titanic_replace)
Излаз:
Корак 5) Велики скуп података може садржати пуно вредности које недостају, а горња метода може бити гломазна. Све горе наведене кораке можемо извршити у једном реду кода методом саппли (). Иако не бисмо знали долине средње и средње вредности.
саппли не ствара оквир података, тако да можемо савити функцију саппли () унутар дата.фраме () да бисмо креирали објекат оквира података.
# Quick code to replace missing values with the meandf_titanic_impute_mean < -data.frame(sapply(df_titanic,function(x) ifelse(is.na(x),mean(x, na.rm = TRUE),x)))
Резиме
Имамо три методе за решавање недостајућих вредности:
- Изузмите сва запажања која недостају
- Импутирај средњу вредност
- Импутирајте са медијаном
Следећа табела резимира како да уклоните сва запажања која недостају
Библиотека | објективан | Код |
---|---|---|
база | Наведи недостајућа запажања |
colnames(df)[apply(df, 2, anyNA)] |
дплир | Уклоните све вредности које недостају |
na.omit(df) |
Импутација средње вредности или средње вредности може се извршити на два начина
- Коришћење применити
- Користећи саппли
Метод | Детаљи | Предности | Мане |
---|---|---|---|
Корак по корак са пријавом | Проверите колоне у којима недостаје, израчунајте средњу вредност / средњу вредност, сачувајте вредност, замените мутате () | Знате вредност средстава / медијана | Више времена за извршење. Може бити споро са великим скуповима података |
Брз начин са саппли | Користите саппли () и дата.фраме () за аутоматско претраживање и замену недостајућих вредности средњом / медијаном | Кратки код и брзо | Не знам вредности импутације |