Главная » Статьи » Студентам » Бизнес-аналитика

Data Frame в R. Часть 2

Работа с табличными данными в R. Часть 2

Начало. Часть 1 >>>

Импортирование данных в R

Подготовка данных

Для создания таблицы данных в R посредством импорта данных из других файлов пользуются командами read.table(), read.csv(), read.delim().

Однако, прежде чем ввести одну из этих команд, необходимо подготовиться к загрузке файлов.

  1. В импортируемой таблице с данными не должно быть пустых ячеек. Если некоторые значения по тем или иным причинам отсутствуют, вместо них следует ввести NA.
  2. Импортируемую таблицу с данными рекомендуется преобразовать в простой текстовый файл с одним из допустимых расширений. На практике обычно используются:
    1. файлы *.txt, в которых значения переменных разделены знаками табуляции (tab-delimited files);
    2. файлы *.csv (comma separated values), в которых значения переменных разделены запятыми.
  3. Заголовки:
    1. В первой строке импортируемой таблицы вводятся заголовки столбцов-переменных, – больше для удобства, но не обязательно. Если их нет, то об этом необходимо сообщить в описании команды, которая будет управлять загрузкой файла, например, read.table().
    2. Все последующие строки файла в качестве первого элемента содержат заголовки строк (если таковые предусмотрены), после которых следуют значения каждой из имеющихся в таблице переменных.
    3. Заголовки должны быть без пробелов, не начинаться с точки или чисел.
    4. Во избежание связанных с кодировкой проблем все текстовые величины в импортируемых файлах рекомендуется создавать с использованием букв латинского алфавита.
  4. Подлежащий импортированию файл рекомендуется поместить в т.н. рабочую папку программы, т.е. папку, в которой R по умолчанию будет "пытаться найти" этот файл.

© Источник: r-analytics.blogspot.com

Рабочая папка R

Чтобы выяснить путь к рабочей папке R на своем компьютере, введите

getwd()
[1] "C:/Users/kravchenko/Documents"

Задать новую рабочую директорию:

setwd("C:/Users/Kravchenko/Ме Бизнес Аналитики")

Проверим

> getwd()
[1] "C:/Users/Kravchenko/Ме Бизнес Аналитики"

Считываем данные из файла

Для файла с расширением .csv применим read.csv()

weather1<-read.csv("weather1.csv")

Столбцы-переменные имеют названия

> colnames(weather1)
[1] "Time" "TemperatureF" "DewpointF"
[4] "PressureIn" "WindDirection" "WindDirectionDegrees"

...

> dim(weather1)
[1] 92 14

Read.table() смог импортировать данные при дополнительных аргументах

weather2<-read.table(file="weather1.csv", header=TRUE, sep=",")

Если подлежащий загрузке файл хранится в папке, отличной от рабочей папки R, то следует указать полный путь к нему.

Чтобы узнать типы всех переменных в таблице, запишем

sapply(weather1,class)
Time TemperatureF DewpointF PressureIn 
"factor" "numeric" "numeric" "numeric" 

...

Узнаем какие значения принимает переменная типа «factor» с именем WindDirection

levels(weather1$WindDirection)
[1] "East" "ESE" "NNE" "NNW" "North" "NW" "SE" "South" "SSE" "SSW" 
[11] "SW" "West" "WNW" "WSW"

Для просмотра всех значений переменной WindDirection достаточно указать

weather1$WindDirection

Посмотрим на значения скорости восточного и западного ветров

> eastwind<-weather1$WindSpeedMPH[weather1$WindDirection=="East"]
> eastwind
[1] 3 1 1
> Westwind<-weather1$WindSpeedMPH[weather1$WindDirection=="West"]
> Westwind
 [1] 0 0 0 4 1 1 1 0 0 1 0 1 0

Если использовать только логическое условие, то ответом являются значения TRUE или FALSE

eastwind<-weather1$WindDirection=="East"
> eastwind
 [1] FALSE FALSE TRUE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE TRUE

Для того, чтобы получить целиком строки, где ветер восточный, запись команды имеет следующий вид

eastwind<-weather1[weather1$WindDirection=="East",]
> eastwind
 Time TemperatureF DewpointF PressureIn WindDirection
3 2005-06-28 00:35:28 72.7 70.3 30.12 East
6 2005-06-28 01:15:34 72.5 70.1 30.10 East
13 2005-06-28 03:05:06 72.3 70.5 30.06 East
...

Добавить столбец

В таблицу mydata добавим столбец «рост»

> height <- c(163, 177, 163, 162, 157)

Для этого введем

> mydata$height<-height

или

> mydata[["height"]]<-height
> mydata
 First Name Age Married height
1 Anna 18 FALSE 163
2 Polina 21 FALSE 177
3 Alex 39 TRUE 163
...

Другой способ заключается в применении функции cbind(). Проиллюстрируем это на примере добавления столбца, в котором содержатся значения веса каждого из лиц.

> weight<-c(74, 63, 68, 55, 56)
> cbind(mydata,weight)
 First Name Age Married height weight
1 Anna 18 FALSE 163 74
2 Polina 21 FALSE 177 63
...

Добавить строку

Добавим в новую строку наблюдения по еше одному человеку

> serg<-data.frame("Serg", 25, FALSE, 183, stringsAsFactors = FALSE)
> rbind(mydata,serg)
Error in match.names(clabs, names(xi)) : names do not match previous names

Для добавления строки предназначена функция rbind()

> serg<-data.frame('First Name'="Serg", Age=25, Married=FALSE, height=183, stringsAsFactors = FALSE)
> rbind(mydata,serg)
Error in match.names(clabs, names(xi)) : names do not match previous names

Здесь возникает проблема с пробелом в “First Name”, так как имя 1-го столбца в serg учитывается как “First.Name”

> serg
 First.Name Age Married height
1 Serg 25 FALSE 183

Переименуем столбцы в mydata

names(mydata)<-c("First.Name","Age","Married", "height")

Выполним rbind()

> rbind(mydata,serg)
 First.Name Age Married height
1 Anna 18 FALSE 163
...
6 Serg 25 FALSE 183

Сортировка

Имеется таблица

> mydata
 First.Name Age Married height
1 Anna 18 FALSE 163
2 Polina 21 FALSE 177
3 Alex 39 TRUE 163
4 Tanya 30 TRUE 162
5 Andre 26 FALSE 157
6 Serg 25 FALSE 183

Сортировка по возрасту приводит к следующим результатам

> sort(mydata$Age)
[1] 18 21 25 26 30 39
> order(mydata$Age)
[1] 1 2 6 5 4 3
> mydata[order(mydata$Age),]
 First.Name Age Married height
1 Anna 18 FALSE 163
2 Polina 21 FALSE 177
6 Serg 25 FALSE 183
...
> mydata[order(mydata$Age,decreasing=TRUE),]
 First.Name Age Married height
3 Alex 39 TRUE 163
4 Tanya 30 TRUE 162
5 Andre 26 FALSE 157
...

 

Начало. Часть 1 >>>

© Источники:

  1. Roger D. Peng. (2015). R Programming for Data Science. URL: leanpub.com
  2. Microsoft & DataCamp. Introduction to R. / By Edx.org
  3. URL: r-analytics.blogspot.com
Категория: Бизнес-аналитика | Добавил: kvn2us (26.03.2017) | Автор: Кравченко В.Н.
Просмотров: 2207 | Теги: таблица данных, табличные данные, Data Frame
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]