Главная » Статьи » Студентам » Бизнес-аналитика |
Работа с табличными данными в R. Часть 2Импортирование данных в RПодготовка данныхДля создания таблицы данных в R посредством импорта данных из других файлов пользуются командами read.table(), read.csv(), read.delim(). Однако, прежде чем ввести одну из этих команд, необходимо подготовиться к загрузке файлов.
© Источник: 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
...
© Источники:
| |
Категория: Бизнес-аналитика | Добавил: kvn2us (26.03.2017) | | |
Просмотров: 2207 | |