R Фрейм данных

Фрейм данных (Data frame) можно понимать как то, что мы обычно называем «таблицей».

Фрейм данных — это структура данных в R, особый двумерный список.

Каждый столбец фрейма данных имеет уникальное имя столбца, и длины всех столбцов равны. Типы данных внутри одного столбца должны совпадать, тогда как разные столбцы могут иметь разные типы данных.

Фреймы данных в языке R создаются с помощью функции data.frame(), синтаксис следующий:

data.frame(…, row.names = NULL, check.rows = FALSE,
           check.names = TRUE, fix.empty.names = TRUE,
           stringsAsFactors = default.stringsAsFactors())
  • …: Вектор-столбец может быть любого типа (символьный, числовой, логический), обычно задаётся в форме tag = value или может быть value.
  • row.names: Имена строк, по умолчанию NULL, можно задать одним числом, строкой или вектором из строк и чисел.
  • check.rows: Проверять, согласованы ли имена строк и длины.
  • check.names: Проверять, допустимы ли имена переменных фрейма данных.
  • fix.empty.names: Указывает, следует ли автоматически именовать безымянные параметры.
  • stringsAsFactors: логическое значение, преобразуются ли символы в факторы. Значение по умолчанию при первой установке — TRUE, и его можно изменить, задав параметр (stringsAsFactors=FALSE).

Следующий код создаёт простой фрейм данных, содержащий имя, ID сотрудника и месячную зарплату:

Пример

table = data.frame(
Имя= c("Zhang San", "Li Si"),
ID сотрудника= c("001","002"),
Месячная зарплата= c(1000, 2000)
   
)
print(table) # Просмотр данных таблицы

Выполнение приведённого выше кода выводит следующий результат:

姓名 工号 月薪
1 张三  001 1000
2 李四  002 2000

Структуру данных фрейма данных можно отобразить с помощью функцииstr():

Пример

table = data.frame(
Имя= c("Zhang San", "Li Si"),
ID сотрудника= c("001","002"),
Месячная зарплата= c(1000, 2000)
)
# Получить структуру данных
str(table)

Выполнение приведённого выше кода выводит следующий результат:

'data.frame':   2 obs. of  3 variables:
 $ 姓名: chr  "张三" "李四"
 $ 工号: chr  "001" "002"
 $ 月薪: num  1000 2000

summary()Сводную информацию о фрейме данных можно отобразить:

Пример

table = data.frame(
Имя= c("Zhang San", "Li Si"),
ID сотрудника= c("001","002"),
Месячная зарплата= c(1000, 2000)
   
)
# Показать сводку
print(summary(table))  

Выполнение приведённого выше кода выводит следующий результат:

姓名               工号                月薪     
Length:2           Length:2           Min.   :1000  
Class :character   Class :character   1st Qu.:1250  
Mode  :character   Mode  :character   Median :1500  
                                      Mean   :1500  
                                      3rd Qu.:1750  
                                      Max.   :2000  

Мы также можем извлечь указанные столбцы:

Пример

table = data.frame(
Имя= c("Zhang San", "Li Si"),
ID сотрудника= c("001","002"),
Месячная зарплата= c(1000, 2000)
)
# Извлечь указанные столбцы
result <- data.frame(table$Name,table$MonthlySalary)
print(result)

Выполнение приведённого выше кода выводит следующий результат:

table.姓名 table.月薪
1       张三       1000
2       李四       2000

Следующее отображает первые две строки:

Пример

table = data.frame(
Name= c("Zhang San", "Li Si","Wang Wu"),
ID сотрудника= c("001","002","003"),
Месячная зарплата= c(1000, 2000,3000)
)
print(table)
# Извлечь первые две строки
print("---Вывод первых двух строк----")
result <- table[1:2,]
print(result)

Выполнение приведённого выше кода выводит следующий результат:

姓名 工号 月薪
1 张三  001 1000
2 李四  002 2000
3 王五  003 3000
[1] "---输出前面两行----"
  姓名 工号 月薪
1 张三  001 1000
2 李四  002 2000

Мы можем прочитать данные конкретного столбца в указанной строке с помощью координат. Ниже мы читаем данные в строках 2 и 3, столбцах 1 и 2:

Пример

table = data.frame(
Name= c("Zhang San", "Li Si","Wang Wu"),
ID сотрудника= c("001","002","003"),
Месячная зарплата= c(1000, 2000,3000)
)
# Чтение данных из строк 2 и 3, столбцов 1 и 2:
result <- table[c(2,3),c(1,2)]
print(result)

Выполнение приведённого выше кода выводит следующий результат:

姓名 工号
2 李四  002
3 王五  003

Расширение фрейма данных

Мы можем расширить существующий фрейм данных. В следующем примере мы добавляем столбец department:

Пример

table = data.frame(
Name= c("Zhang San", "Li Si","Wang Wu"),
ID сотрудника= c("001","002","003"),
Месячная зарплата= c(1000, 2000,3000)
)
# Добавить столбец department
table$Department<- c("Operations","Technology","Editorial")

print(table)

Выполнение приведённого выше кода выводит следующий результат:

姓名 工号 月薪 部门
1 张三  001 1000 运营
2 李四  002 2000 技术
3 王五  003 3000 编辑

Мы можем использовать функциюcbind(), чтобы объединить несколько векторов в фрейм данных:

Пример

# Создать векторы
sites <- c("Google","Example","Taobao")
likes <- c(222,111,123)
url <- c("www.google.com","www.example.com","www.taobao.com")

# Объединить векторы в фрейм данных
addresses <- cbind(sites,likes,url)

# Просмотр датафрейма
print(addresses)

Выполнение приведённого выше кода выводит следующий результат:

     sites    likes url             
[1,] "Google" "222" "www.google.com"
[2,] "Example" "111" "www.example.com"
[3,] "Taobao" "123" "www.taobao.com"

Если вам нужно объединить два датафрейма, вы можете использовать функциюrbind():

Пример

table = data.frame(
Name= c("Zhang San", "Li Si","Wang Wu"),
ID сотрудника= c("001","002","003"),
Месячная зарплата= c(1000, 2000,3000)
)
newtable = data.frame(
Name= c(Xiaoming, "Newbie"),
ID сотрудника= c("101","102"),
Месячная зарплата= c(5000, 7000)
)
# Объединение двух датафреймов
result <- rbind(table,newtable)
print(result)

Выполнение приведённого выше кода выводит следующий результат:

姓名 工号 月薪
1 张三  001 1000
2 李四  002 2000
3 王五  003 3000
4 小明  101 5000
5 小白  102 7000
Другие расширения