Обработка на данни и редактиране на таблици R

Структурата на маса и променящите типове данни

Най-добрият начин за осигуряване на нови знания - е практика. Ето защо, ние ще продължим да работим с таблицата на физически данни на един от учениците на военни училища "voenvuz". По този начин, натоварването е вече познат ни маса в Rgui (таблица може да се изтегли от тук).

От главата и ул

За типове данни

Защо е важно да се определи вида на данните в колоните на таблицата? Тъй като при провеждане на статистически изследвания, информация за типа на данните се взема предвид и ефектът върху резултата.

Езикът може да бъде различена R пет основни типа данни, съхранявани в колоните на таблицата:

Има също така комплекс (комплекс) и суров (необработен) типове данни, но те са рядкост и затова за тях няма да пиша тук. Липсващи данни са посочени като "NA" (от английски език не е на разположение. - N), а след това R и да ги игнорира.

Променете типа на данните, на практика

Хайде, "Възраст" колона е правилно идентифицирани като цяло число. Но колоните "Височина" и "тегло" са числови, а защото междинни стойности могат да съдържат, например, 182.5. Римейк на техния тип Integer в Тип Цифров:
voenvuz $ Височина <- as.numeric(voenvuz$Height)
voenvuz $ Тегло <- as.numeric(voenvuz$Weight)

В резултат на това повтаряне на ул командния (voenvuz). Сега трябва да получите тази снимка.

Обработка на данни и редактиране на таблици R

Редактиране на таблица на елементите

Понякога има ситуации, в които искате да вмъкнете в колона на таблицата или ред, променете стойността на стоката или на името на колоната. Нашата маса - не е изключение и трябва да се работи.

Добавете редове

Добави в таблицата с данни на двете нови студенти: Иванов и Олег. За да направите това, създайте нова структура - списък (списък). В списъка, ние правим параметрите на поръчката, която съвпада със структурата на таблицата (не забравяйте, че в кавички пишем Нецифрен типове данни):
Иван <- list("Ivan", 21, 175, 67, "2", "+")
Олег <- list("Oleg", 24, 189, 82, "1", "+")

След това, с помощта на rbind инструмент ние се съчетаят тези два списъка с нашата маса (От ред свързват английски език, което буквално означава "връзвам линии".):
voenvuz <- rbind(voenvuz, Ivan, Oleg)

Добавяне на колони

Сега имаме в таблицата, по двама на Иван Олег. В този случай, би било добре да се регистрират за всеки ученик уникален идентификационен номер (ID), да не се бърка кой кой е. За да се създаде тази структура, която е вектор (последователност от елементи от един вид). В него ние ще запише поредица от 1 до 22, така че всеки един от нашите 22 студенти имаше уникален идентификатор:
ID <- c(1:22)
Сега ние съчетаваме вектор маса с помощта на функцията cbind (от колона свързват английски език.):
voenvuz <- cbind(voenvuz, ID)
Не забравяйте да се промени типа данни на новата колона с характер:
voenvuz $ ID <- as.character(voenvuz$ID)

Като друг пример за добавяне на нова колона в таблицата с данни, изчисляване на индекс на телесна маса (ИТМ) за всеки ученик. За да направите това, ние ще използваме по нов начин: пишем математическа формула, в езика на показателя, и да го зададете нов име на колона "BMI" в нашата таблица:
voenvuz $ BMI <- voenvuz$Weight / (voenvuz$Height * 0.01)^2

Вижте какво се случи с помощта на познатите функции на главата и ул

Изтриване на редовете и колоните

Налице е относително "универсална формула", за да се отстранят елементите в таблицата: new.data <- my.data[. ]
За да го използвате правилно, трябва да се помни няколко правила:

  1. След името на пространството за таблици вътре квадратните скоби трябва да бъде разделена на две части със запетая.
  2. Всичко, което е преди запетаята, се отнася до линиите, всички, че след - колоните.
  3. Поставете знак минус пред номера на номер колона или ред, който искате да деинсталирате.
  4. Ако има няколко елемента, използвайте с (.). прехвърляне елементи вътре в скоби със запетая.

В нашия случай, за да се отстрани от масата не се нуждае от нищо, но аз ще ви покажа няколко примера, наречени "пресечени" маса "trash1" имена ", trash2", "trash3", "trash4":
trash1 <- voenvuz[. -7] # удалим раннее созданный столбец "ID"
trash2 <- voenvuz[ -2, ] # удалим строку под номером 2 (данные Петра)
trash3 <- voenvuz[ -c(1,2,3,4,5,6,7,8,9,10), ] # удалим первые десять строк
trash4 <- voenvuz[ -c(1:10), ] # то же самое, только код короче

Промяна на имената на колоните и данните в клетките:

Преименуване на колона "Rhesus.factor" на съкратено "Резос". За да направите това, обадете се на имената на функцията. пише в параметрите на функцията на номера на име на таблица и колона, и да го възложи ново име:
имена (voenvuz) [6] <- "Rhesus"

Промяна на данни в таблица клетка не е особено трудно. В скоби да се регистрираме координатите на клетката се изисква (преди десетичната запетая - линия, след запетая - колона) и възлага нова стойност:
voenvuz [1, "име"] <- "Vanya"

След всички наши манипулации, ние трябва да се просто като таблица с данни:

Обработка на данни и редактиране на таблици R

Филтриране и сортиране на данни

Същият резултат се постига, ако използваме логическите оператори ">" (по-голямо от) и "!" (Изтрит):
voenvuz.final <- voenvuz[!voenvuz$Age> 23]

По този начин, ние имаме окончателния вариант на "voenvuz.final" маса. Остава само да подредите колоните:
voenvuz.final <- voenvuz.final[,c("Name", "ID", "Age", "Height", "Weight", "BMI", "Blood.group", "Rhesus")]

И за да сортирате от името на данните на учениците с помощта на функцията на поръчката.
voenvuz.final <- voenvuz.final[order(voenvuz.final$Name),]

След редактиране на масата, да актуализирате имената на редовете, защото Сега те не отговарят на действителността, и да извлече маса на екрана, като напишете името на таблицата в конзолата:
rownames (voenvuz.final) = C (1: дължина (voenvuz.final $ ID))
voenvuz.final

Обработка на данни и редактиране на таблици R

заключение

Описаните по-горе данни редактиране методи не са уникални в таблицата, има много други методи и команди, което позволява да се получи желаният резултат. Говорих само от най-простите и най-често използваните. За по-подробна информация по този въпрос, бих искал да препоръчам два източника на английски език: