| Главная » Статьи » Студентам » Бизнес-аналитика | 
| Работа с табличными данными в R. Часть 1Data FrameData 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" ... ... 
 © Источники: 
 | |
| Категория: Бизнес-аналитика | Добавил: kvn2us (25.03.2017) | | |
| Просмотров: 6662 | | 
