R数据框用法详解

本文概述

  • 如何创建数据框
  • 获取R数据框的结构
  • 从数据框提取数据
  • 修改数据框
  • 数据框中的数据摘要
数据帧是二维数组状结构或表, 其中一列包含一个变量的值, 行包含每一列的一组值。数据帧是列表的一种特殊情况, 其中每个组件的长度相等。
数据帧用于存储数据表, 并且在数据帧中以列表形式存在的向量具有相等的长度。
以简单的方式, 它是等长向量的列表。矩阵可以包含一种类型的数据, 但是数据框可以包含不同的数据类型, 例如数字, 字符, 因子等。
数据帧具有以下特征。
  • 列名应为非空。
  • 行名称应该是唯一的。
  • 存储在数据框中的数据可以是因子, 数字或字符类型。
  • 每列包含相同数量的数据项。
R数据框用法详解

文章图片
如何创建数据框 在R中, 借助数据的frame()函数创建数据帧。此函数包含任何类型的向量, 例如数字, 字符或整数。在下面的示例中, 我们创建一个数据框, 其中包含员工ID(整数向量), 员工姓名(字符向量), 薪水(数字向量)和开始日期(日期向量)。
例子
# Creating the data frame.emp.data< - data.frame(employee_id = c (1:5), employee_name = c("Shubham", "Arpita", "Nishka", "Gunjan", "Sumit"), sal = c(623.3, 915.2, 611.0, 729.0, 843.25), starting_date = as.Date(c("2012-01-01", "2013-09-23", "2014-11-15", "2014-05-11", "2015-03-27")), stringsAsFactors = FALSE)# Printing the data frame.print(emp.data)

输出
employee_idemployee_namesalstarting_date11Shubham623.302012-01-0122Arpita915.202013-09-2333Nishka611.002014-11-1544Gunjan729.002014-05-1155Sumit843.252015-03-27

获取R数据框的结构 在R中, 我们可以找到数据帧的结构。 R提供了一个称为str()的内置函数, 该函数返回具有完整结构的数据。在下面的示例中, 我们使用不同数据类型的向量创建了一个框架, 并提取了其结构。
例子
# Creating the data frame.emp.data< - data.frame(employee_id = c (1:5), employee_name = c("Shubham", "Arpita", "Nishka", "Gunjan", "Sumit"), sal = c(623.3, 515.2, 611.0, 729.0, 843.25), starting_date = as.Date(c("2012-01-01", "2013-09-23", "2014-11-15", "2014-05-11", "2015-03-27")), stringsAsFactors = FALSE)# Printing the structure of data frame.str(emp.data)

输出
'data.frame':5 obs. of4 variables: $ employee_id: int1 2 3 4 5 $ employee_name: chr"Shubham" "Arpita" "Nishka" "Gunjan" ... $ sal: num623 515 611 729 843 $ starting_date: Date, format: "2012-01-01" "2013-09-23" ...

从数据框提取数据 数据帧的数据对我们来说至关重要。为了操纵数据帧的数据, 必须从数据帧中提取数据。我们可以通过以下三种方式提取数据:
  1. 我们可以使用列名从数据框中提取特定的列。
  2. 我们也可以从数据框中提取特定的行。
  3. 我们可以提取对应于特定列的特定行。
【R数据框用法详解】让我们看一个例子, 以了解如何借助这些方法从数据框中提取数据。
从数据框中提取特定列
例子
# Creating the data frame.emp.data< - data.frame(employee_id = c (1:5), employee_name= c("Shubham", "Arpita", "Nishka", "Gunjan", "Sumit"), sal = c(623.3, 515.2, 611.0, 729.0, 843.25), starting_date = as.Date(c("2012-01-01", "2013-09-23", "2014-11-15", "2014-05-11", "2015-03-27")), stringsAsFactors = FALSE)# Extracting specific columns from a data framefinal < - data.frame(emp.data$employee_id, emp.data$sal)print(final)

输出
emp.data.employee_idemp.data.sal11623.3022515.2033611.0044729.0055843.25

从数据框中提取特定行
例子
# Creating the data frame.emp.data< - data.frame(employee_id = c (1:5), employee_name = c("Shubham", "Arpita", "Nishka", "Gunjan", "Sumit"), sal = c(623.3, 515.2, 611.0, 729.0, 843.25), starting_date = as.Date(c("2012-01-01", "2013-09-23", "2014-11-15", "2014-05-11", "2015-03-27")), stringsAsFactors = FALSE)# Extracting first row from a data framefinal < - emp.data[1, ]print(final)# Extracting last two row from a data framefinal < - emp.data[4:5, ]print(final)

输出
employee_idemployee_namesalstarting_date11Shubham623.32012-01-01employee_idemployee_namesalstarting_date44Gunjan729.002014-05-1155Sumit843.252015-03-27

提取对应于特定列的特定行
例子
# Creating the data frame.emp.data< - data.frame(employee_id = c (1:5), employee_name = c("Shubham", "Arpita", "Nishka", "Gunjan", "Sumit"), sal = c(623.3, 515.2, 611.0, 729.0, 843.25), starting_date = as.Date(c("2012-01-01", "2013-09-23", "2014-11-15", "2014-05-11", "2015-03-27")), stringsAsFactors = FALSE)# Extracting 2nd and 3rd row corresponding to the 1st and 4th column final < - emp.data[c(2, 3), c(1, 4)]print(final)

输出
employee_idstarting_date222013-09-23332014-11-15

修改数据框 R允许我们在数据框中进行修改。像矩阵修改一样, 我们可以通过重新分配来修改数据框。我们不仅可以添加行和列, 还可以删除它们。通过添加行和列来扩展数据框。
我们可以
  1. 通过使用cbind()函数在新列名的帮助下添加列向量来添加列。
  2. 通过添加与现有数据框相同结构的新行并使用rbind()函数来添加行
  3. 通过为它们分配NULL值来删除列。
  4. 通过重新分配行来删除它们。
让我们看一个示例, 以了解rbind()函数的工作方式以及如何在数据帧中进行修改。
示例:添加行和列
# Creating the data frame.emp.data< - data.frame(employee_id = c (1:5), employee_name = c("Shubham", "Arpita", "Nishka", "Gunjan", "Sumit"), sal = c(623.3, 515.2, 611.0, 729.0, 843.25), starting_date = as.Date(c("2012-01-01", "2013-09-23", "2014-11-15", "2014-05-11", "2015-03-27")), stringsAsFactors = FALSE)print(emp.data)#Adding row in the data framex < - list(6, "Vaishali", 547, "2015-09-01")rbind(emp.data, x)#Adding column in the data framey < - c("Moradabad", "Lucknow", "Etah", "Sambhal", "Khurja")cbind(emp.data, Address=y)

输出
employee_idemployee_namesalstarting_date11Shubham623.302012-01-0122Arpita515.202013-09-2333Nishka611.002014-11-1544Gunjan729.002014-05-1155Sumit843.252015-03-27employee_idemployee_namesalstarting_date11Shubham623.302012-01-0122Arpita515.202013-09-2333Nishka611.002014-11-1544Gunjan729.002014-05-1155Sumit843.252015-03-2766Vaishali547.002015-09-01employee_idemployee_namesalstarting_dateAddress11Shubham623.302012-01-01Moradabad22Arpita515.202013-09-23Lucknow33Nishka611.002014-11-15Etah44Gunjan729.002014-05-11Sambhal55Sumit843.252015-03-27Khurja

示例:删除行和列
# Creating the data frame.emp.data< - data.frame(employee_id = c (1:5), employee_name = c("Shubham", "Arpita", "Nishka", "Gunjan", "Sumit"), sal = c(623.3, 515.2, 611.0, 729.0, 843.25), starting_date = as.Date(c("2012-01-01", "2013-09-23", "2014-11-15", "2014-05-11", "2015-03-27")), stringsAsFactors = FALSE)print(emp.data)#Delete rows from data frameemp.data< -emp.data[-1, ]print(emp.data)#Delete column from the data frameemp.data$starting_date< -NULLprint(emp.data)

输出
employee_idemployee_namesalstarting_date11Shubham623.302012-01-0122Arpita515.202013-09-2333Nishka611.002014-11-1544Gunjan729.002014-05-1155Sumit843.252015-03-27employee_idemployee_namesalstarting_date22Arpita515.202013-09-2333Nishka611.002014-11-1544Gunjan729.002014-05-1155Sumit843.252015-03-27employee_idemployee_namesal11Shubham623.3022Arpita515.2033Nishka611.0044Gunjan729.0055Sumit843.25

数据框中的数据摘要 在某些情况下, 需要在数据框中找到统计摘要和数据的性质。 R提供了summary()函数来提取统计摘要和数据的性质。该函数以数据帧为参数, 并返回数据的统计信息。让我们看一个示例, 以了解如何在R中使用此函数:
例子
# Creating the data frame.emp.data< - data.frame(employee_id = c (1:5), employee_name = c("Shubham", "Arpita", "Nishka", "Gunjan", "Sumit"), sal = c(623.3, 515.2, 611.0, 729.0, 843.25), starting_date = as.Date(c("2012-01-01", "2013-09-23", "2014-11-15", "2014-05-11", "2015-03-27")), stringsAsFactors = FALSE)print(emp.data)#Printing the summaryprint(summary(emp.data))

输出
employee_idemployee_namesalstarting_date11Shubham623.302012-01-0122Arpita515.202013-09-2333Nishka611.002014-11-1544Gunjan729.002014-05-1155Sumit843.252015-03-27employee_idemployee_namesalstarting_date Min.:1Length:5Min.:515.2Min.:2012-01-01 1st Qu.:2Class :character1st Qu.:611.0 1st Qu.:2013-09-23 Median :3Mode:characterMedian :623.3Median :2014-05-11 Mean:3Mean:664.4Mean:2014-01-14 3rd Qu.:43rd Qu.:729.03rd Qu.:2014-11-15 Max.:5Max.:843.2Max.:2015-03-27

    推荐阅读