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

Data Frame в R. Часть 1

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

Data Frame

Data Frame используются для хранения табличных данных. Они представляют собой особый тип списков (lists), матрицу данных. Это – именованный список векторов одной и той же длины, в которых элементы отвечают за переменные. В отличие от матриц, таблица данных содержит элементы разных классов, т.е. допускаются столбцы с числовыми, текстовыми и логическими значениями.

Создать Data Frame

Для создания таблицы данных применяется функция data.frame()

> x <- data.frame(foo = 1:4, bar = c(T, T, F, F))
> x
  foo   bar
1   1  TRUE
2   2  TRUE
3   3 FALSE
4   4 FALSE

Определение таблицы данных на основе векторов

Определим сначала два вектора, а после введем величину d, которая является таблицей данных, включающей эти два вектора:

> intake.pre<-c(5260,5470,5640,6180,6390,6515,6805,7515,7515,8230,8770)

> intake.post<-c(3910,4220,3885,5160,5645,4680,5265,5975,6790,6900,7335)

> d <- data.frame(intake.pre,intake.post)

> d

   intake.pre  intake.post

1     5260        3910

2     5470        4220

3     5640        3885

4     6180        5160

5     6390        5645

6     6515        4680

7     6805        5265

8     7515        5975

9     7515        6790

10    8230        6900

11    8770        7335

Еще один пример по созданию таблицы данных

> name <- c("Anna", "Polina", "Alex", "Tanya", "Andre")
> age <- c(18, 21, 39, 30, 26)
> fam<-c(FALSE,FALSE,TRUE,TRUE,FALSE)
> mydata<-data.frame(name,age,fam)
> mydata
    name age   fam
1   Anna  18 FALSE
2 Polina  21 FALSE
...

Пусть требуется изменить названия столбцов. Тогда

> names(mydata)<-c("First Name", "Age", "Married")
> mydata
  First Name Age Married
1       Anna  18   FALSE
...

Кроме того, вывод значений 1-го столбца (переменной) осуществляется следующим образом

> mydata$`First Name`
[1] Anna   Polina Alex   Tanya  Andre

Изложенная процедура создания таблицы данных с изменением названий столбцов имеет аналог

> mydata1<-data.frame('First Name'= name, Age=age, Married=fam)
> mydata1
  First.Name Age Married
1       Anna  18   FALSE
2     Polina  21   FALSE
...

Выбор числа, строк и столбцов

Для работы со списком по одной переменной (столбцом) используется знак $

> d$intake.pre

 [1] 5260 5470 5640 6180 6390 6515 6805 7515 7515 8230 8770

> d[["intake.pre"]]
 [1] 5260 5470 5640 6180 6390 6515 6805 7515 7515 8230 8770
> d[[1]]
 [1] 5260 5470 5640 6180 6390 6515 6805 7515 7515 8230 8770

Если нужно взять определенные элементы из вектора, пользуемся записью вида

> intake.pre[c(3,5,7)]

[1] 5640 6390 6805

Здесь с(…) запись, которая определяет вектор, состоящий из чисел под указанными порядковыми номерами.

Это же можно делать следующим образом

> v <- c(3,5,7)

> intake.pre[v]

[1] 5640 6390 6805

Кроме того, применяются логические условия для выбора чисел из вектора

intake.post[intake.pre > 7000 & intake.pre <= 8000]

[1] 5975 6790

Индексирование с data frame происходит так

> d[5,1]

[1] 6390

В квадратных скобках первый параметр указывает на номер строки, а второй – столбца. То же самое получаем, если вместо номера указывается наименование переменной

> d[5,"intake.pre"]
[1] 6390

Если нужна конкретная строка целиком, например, 5-я, то записываем

> d[5,]

  intake.pre intake.post

5       6390        5645

Следует подчеркнуть, что запятая нужна.

По аналогии получаем все значения по конкретному столбцу

d[,2]

 [1] 3910 4220 3885 5160 5645 4680 5265 5975 6790 6900 7335

или

> mydata[2]
  Age
1  18
2  21
3  39
4  30
5  26

Пусть необходимо вывести значения по заданным строкам и столбцам. Для этого следует выполнить

> mydata[c(3,5),c(2,3)]
  Age Married
3  39    TRUE
5  26   FALSE
> mydata[c(3,5),c("First Name","Married")]
  First Name Married
3     Alex    TRUE
5    Andre   FALSE

Выбор по условию

Если нужна выборка записей (строк), которые соответствуют выполнению условия по одной переменной, то команда имеет такой вид

> d[d$intake.pre>7000,]

   intake.pre  intake.post

8    7515        5975

9    7515        6790

10   8230        6900

11   8770        7335

Данную выборку можно получить несколько другим способом

> sel <- d$intake.pre>7000

> sel

 [1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE  TRUE  TRUE

> d[sel,]

   intake.pre intake.post

8    7515        5975

9    7515        6790

10   8230        6900

11   8770        7335

Шапка – head ()

Работая над большим массивом данных, часто есть потребность посмотреть несколько первых строк. В таком случае можно выбрать один из двух способов.

> d[1:2,]

  intake.pre intake.post

1   5260        3910

2   5470        4220

> head(d)

  intake.pre intake.post

1   5260        3910

2   5470        4220

3   5640        3885

4   6180        5160

5   6390        5645

6   6515        4680

Конец – tail()

Чтобы посмотреть конец таблицы, введите tail().

> tail(d)

   intake.pre intake.post

6    6515        4680

7    6805        5265

8    7515        5975

9    7515        6790

10   8230        6900

11   8770        7335

Сведения о таблице: количество строк и столбцов, их названия

Чтобы узнать, сколько строк и столбцов насчитывается в таблице, воспользуемся функцией dim()

> dim(d)
[1] 11  2

Благодаря dimnames() можно увидеть названия строк и столбцов

> dimnames(d)
[[1]]
[1] "1"  "2"  "3"  "4"  "5"  "6"  "7"  "8"  "9"  "10" "11"
[[2]]
[1] "intake.pre"  "intake.post"

Как видим, Data Frame имеет особый атрибут raw.names

> row.names(d)
 [1] "1"  "2"  "3"  "4"  "5"  "6"  "7"  "8"  "9"  "10" "11"

Чтобы узнать и применять в дальнейших расчетах количество строк, вводим функцию nrow(). А количество столбцов определяется через ncol().

> nrow(d)
[1] 11
> ncol(d)
[1] 2

Полезной функцией для получения информации о таблице данных является str()

> str(d)
'data.frame':     11 obs. of  2 variables:
 $ intake.pre : num  5260 5470 5640 6180 6390 ...
 $ intake.post: num  3910 4220 3885 5160 5645 ...
> str(mydata)
'data.frame':     5 obs. of  3 variables:
 $ First Name: Factor w/ 5 levels "Alex","Andre",..: 3 4 1 5 2
 $ Age       : num  18 21 39 30 26
 $ Married   : logi  FALSE FALSE TRUE TRUE FALSE

При создании таблицы можно указать, что переменная типа “Factor” является “Character”

> mydata2<-data.frame(name,age, fam, stringsAsFactors = FALSE)

> str(mydata2)

'data.frame':     5 obs. of  3 variables:

 $ name: chr  "Anna" "Polina" "Alex" "Tanya" ...

...

Продолжение. Часть 2 >>>

 

© Источники:

  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 (25.03.2017) | Автор: Кравченко В.Н.
Просмотров: 6563 | Теги: таблица данных, табличные данные, Data Frame
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]