R Data Frame

R Data Frame 首页 / R入门教程 / R Data Frame

data frame数据框是二维数组状结构或表,其中一列包含一个变量的值,行包含每一列的一组值。data frame是列表的一种特殊情况,其中每个组成部分的长度相等。

data frame用于存储数据表,并且在data frame中以列表形式存在的向量长度相等。

以简单的方式,它是等长向量的列表。矩阵可以包含一种类型的数据,但是dataframe可以包含不同的数据类型,例如数字,字符,因子等。

data frame具有以下特征。

  • 列名不能为空。
  • 行名应该唯一。
  • 存储在dataframe中的数据可以是因子,数字或字符类型。
  • 每个列包含相同数量的数据项。
R Data Frame

创建数据框

R中,借助数据的frame()函数创建data frame。此函数包含任何类型的向量,例如数字,字符或整数。在下面的示例中,我们创建一个dataframe,其中包含员工ID(整数向量),员工姓名(字符向量),薪水(数字向量)和开始日期(日期向量)。

示例

# 创建数据框。 
emp.data<- data.frame(  
employee_id = c (1:5),   
employee_name = c("Learnfk","Toolfk","Chromefk","Poemfk","Nesfk"),  
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  
)  
# 打印数据框。          
print(emp.data)  

输出

  employee_id employee_name    sal starting_date
1           1       Learnfk 623.30    2012-01-01
2           2        Toolfk 915.20    2013-09-23
3           3      Chromefk 611.00    2014-11-15
4           4        Poemfk 729.00    2014-05-11
5           5         Nesfk 843.25    2015-03-27

获取数据框结构

在R中,我们可以找到data frame的结构。 R提供了一个称为str()的内置函数,该函数返回具有完整结构的数据。在下面的示例中,我们使用不同数据类型的向量创建了一个框架,并提取了其结构。

示例

# 创建数据框。
emp.data<- data.frame(  
employee_id = c (1:5),   
employee_name = c("Learnfk","Toolfk","Chromefk","Poemfk","Nesfk"),  
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  
)  
# 打印数据框的结构。      
str(emp.data)  

输出

'data.frame':   5 obs. of  4 variables:
 $ employee_id  : int  1 2 3 4 5
 $ employee_name: chr  "Learnfk" "Toolfk" "Chromefk" "Poemfk" ...
 $ sal          : num  623 515 611 729 843
 $ starting_date: Date, format: "2012-01-01" "2013-09-23" ...

提取数据框数据

data frame数据框的数据对我们来说至关重要。为了操纵data frame的数据,必须从data frame中提取数据。我们可以通过以下三种方式提取数据:

  1. 我们可以使用列名从dataframe中提取特定列。
  2. 我们还可以从dataframe中提取特定的行。
  3. 我们可以提取与特定列相对应的特定行。

让我们看一下每个示例,以了解如何借助这些方法从dataframe中提取数据。

从数据框中提取特定列

# 创建数据框。  
emp.data<- data.frame(  
employee_id = c (1:5),   
employee_name= c("Learnfk","Toolfk","Chromefk","Poemfk","Nesfk"),  
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  
)  
# 从数据框中提取特定列
final <- data.frame(emp.data$employee_id,emp.data$sal)  
print(final)  

输出

  emp.data.employee_id emp.data.sal
1                    1       623.30
2                    2       515.20
3                    3       611.00
4                    4       729.00
5                    5       843.25

从数据框中提取特定的行

示例

# 创建数据框。
emp.data<- data.frame(  
employee_id = c (1:5),   
employee_name = c("Learnfk","Toolfk","Chromefk","Poemfk","Nesfk"),  
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  
)  
# 从数据框中提取第一行  
final <- emp.data[1,]  
print(final)  
  
  
# 从数据框中提取最后两行    
final <- emp.data[4:5,]  
print(final)  

输出

        employee_id  employee_name    sal       starting_date
1          1           Learnfk       623.3        2012-01-01

       employee_id  employee_name    sal      starting_date
4         4          Poemfk        729.00       2014-05-11
5         5          Nesfk         843.25       2015-03-27

提取对应于特定列的特定行

示例

# 创建数据框。
emp.data<- data.frame(  
employee_id = c (1:5),   
employee_name = c("Learnfk","Toolfk","Chromefk","Poemfk","Nesfk"),  
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  
)  
# 提取对应于第 1 和第 4 列的第 2 和第 3 行   
final <- emp.data[c(2,3),c(1,4)]  
print(final)  

输出

        employee_id   starting_date
2           2           2013-09-23
3           3           2014-11-15

修改数据框

R允许我们在dataframe数据框中进行修改。像矩阵修改一样,我们可以通过重新分配来修改dataframe。我们不仅可以添加行和列,还可以删除它们。通过添加行和列来扩展dataframe数据框。

我们可以

  1. 通过使用cbind()函数在新列名的帮助下添加列向量来添加列。
  2. 通过添加与现有dataframe具有相同结构的新行并使用rbind()函数来添加行
  3. 通过为列分配NULL值来删除列。
  4. 通过重新分配行来删除它们。

让我们看一个示例,以了解rbind()函数的工作方式以及如何在data frame中进行修改。

示例:添加行和列

# 创建数据框。
emp.data<- data.frame(  
employee_id = c (1:5),   
employee_name = c("Learnfk","Toolfk","Chromefk","Poemfk","Nesfk"),  
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)  
  
#在数据框中添加行
x <- list(6,"Vaishali",547,"2015-09-01")  
rbind(emp.data,x)  
  
#在数据框中添加列
y <- c("Moradabad","Lucknow","Etah","Sambhal","Khurja")  
cbind(emp.data,Address=y)  

输出

     employee_id  employee_name    sal          starting_date
1       1              Learnfk    623.30          2012-01-01
2       2              Toolfk     515.20          2013-09-23
3       3              Chromefk     611.00          2014-11-15
4       4              Poemfk     729.00          2014-05-11
5       5              Nesfk      843.25          2015-03-27
     employee_id  employee_name     sal        starting_date
1       1              Learnfk     623.30          2012-01-01
2       2              Toolfk      515.20          2013-09-23
3       3              Chromefk      611.00          2014-11-15
4       4              Poemfk      729.00          2014-05-11
5       5              Nesfk       843.25          2015-03-27
6       6              Vaishali    547.00          2015-09-01
     employee_id     employee_name    sal        starting_date        Address
1       1              Learnfk       623.30        2012-01-01        Moradabad
2       2              Toolfk        515.20        2013-09-23        Lucknow
3       3              Chromefk        611.00        2014-11-15        Etah
4       4              Poemfk        729.00        2014-05-11        Sambhal
5       5              Nesfk         843.25        2015-03-27        Khurja

示例:删除行和列

# 创建数据框。
emp.data<- data.frame(  
employee_id = c (1:5),   
employee_name = c("Learnfk","Toolfk","Chromefk","Poemfk","Nesfk"),  
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)  
  
#从数据框中删除行
emp.data<-emp.data[-1,]  
print(emp.data)  
  
#从数据框中删除列
emp.data$starting_date<-NULL  
print(emp.data)  

输出

  employee_id employee_name    sal starting_date
1           1       Learnfk 623.30    2012-01-01
2           2        Toolfk 515.20    2013-09-23
3           3      Chromefk 611.00    2014-11-15
4           4        Poemfk 729.00    2014-05-11
5           5         Nesfk 843.25    2015-03-27
  employee_id employee_name    sal starting_date
2           2        Toolfk 515.20    2013-09-23
3           3      Chromefk 611.00    2014-11-15
4           4        Poemfk 729.00    2014-05-11
5           5         Nesfk 843.25    2015-03-27
  employee_id employee_name    sal
2           2        Toolfk 515.20
3           3      Chromefk 611.00
4           4        Poemfk 729.00
5           5         Nesfk 843.25

数据框汇总

在某些情况下,需要在dataframe数据框中找到统计摘要和数据的性质。 R提供了summary()函数来提取统计摘要和数据的性质。该函数以data frame为参数,并返回数据的统计信息。让我们看一个示例,以了解如何在R中使用此函数:

示例

# 创建数据框。
emp.data<- data.frame(  
employee_id = c (1:5),   
employee_name = c("Learnfk","Toolfk","Chromefk","Poemfk","Nesfk"),  
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)  
  
#打印汇总
print(summary(emp.data))  

输出

  employee_id employee_name    sal starting_date
1           1       Learnfk 623.30    2012-01-01
2           2        Toolfk 515.20    2013-09-23
3           3      Chromefk 611.00    2014-11-15
4           4        Poemfk 729.00    2014-05-11
5           5         Nesfk 843.25    2015-03-27
  employee_id employee_name           sal        starting_date       
 Min.   :1    Length:5           Min.   :515.2   Min.   :2012-01-01  
 1st Qu.:2    Class :character   1st Qu.:611.0   1st Qu.:2013-09-23  
 Median :3    Mode  :character   Median :623.3   Median :2014-05-11  
 Mean   :3                       Mean   :664.4   Mean   :2014-01-14  
 3rd Qu.:4                       3rd Qu.:729.0   3rd Qu.:2014-11-15  
 Max.   :5                       Max.   :843.2   Max.   :2015-03-27 

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

邱岳的产品实战 -〔邱岳〕

白话法律42讲 -〔周甲徳〕

Linux性能优化实战 -〔倪朋飞〕

Flutter核心技术与实战 -〔陈航〕

编辑训练营 -〔总编室〕

苏杰的产品创新课 -〔苏杰〕

软件设计之美 -〔郑晔〕

大厂晋升指南 -〔李运华〕

Spring Cloud 微服务项目实战 -〔姚秋辰(姚半仙)〕

好记忆不如烂笔头。留下您的足迹吧 :)