R语言数据结构——数据框

  • 数据框的创建
  • data.frame()函数创建
  • 由矩阵转数据框
  • 数据框增加
  • 添加新的一列
  • 添加新的一行
  • 数据框的删除
  • 行的删除
  • 列的删除
  • 数据框的查找
  • 指定行的查找
  • 指定列的查找
  • which()函数的使用
  • 数据框的修改
  • 总结



数据框作为数据分析中常用的数据结构,其优势在于他可以存储多种数据形式,并不会局限于单独某一种数据形式。对应的处理方法也就对应的多一些,本文将从数据框的增删查改四个方面去简述数据框的处理。

数据框的创建

data.frame()函数创建

data.frame()是数据框在R语言里的标识方式,也是用于创建数据框的常用形式。

data.frame(…, row.names = NULL, check.rows = FALSE,
 check.names = TRUE, fix.empty.names = TRUE,
 stringsAsFactors = default.stringsAsFactors())

参数解释:

参数

解释


需要创建的数据

row.names

数据框的行名,通常为一个向量

check.rows

检查row.names的长度与数据框的行数是否相同

stringAsFactors

对字符串的处理,TRUE时,将字符串改为因子类型, FALSE时,不改变字符串的类型

ID <- c(101,102,103,104,105,106)
name <- c('Tom','Bob','Tim','王二','张三','李四')
math_score <- c(88,70,65,77,64,80)

data_1 <- data.frame(ID,name,score,stringsAsFactors = F)

##查看数据形式
sapply(data_1, class)  # "numeric" "character"   "numeric"

R语言format data函数 r语言的data.frame_r语言

由矩阵转数据框

首先得有矩阵,然后利用as.data.frame()函数将矩阵转化为数据框。

x_1 <- seq(1:12)
x_2 <- matrix(x_1,nrow = 3,ncol = 4,byrow = T)

data_1 <- as.data.frame(x_2)

R语言format data函数 r语言的data.frame_R语言format data函数_02

数据框增加

添加新的一列

新添加一个列名,然后赋值语句添加一个向量即可。或者可以列的角标进行添加赋值。
:添加的列的向量长度必须与数据框行数相同。

ID <- c(101,102,103,104,105,106)
name <- c('Tom','Bob','Tim','王二','张三','李四')
math_score <- c(88,70,65,77,64,80)
data_1 <- data.frame(ID,name,math_score,stringsAsFactors = F)

data_1$English_socer <- c(99,86,75,77,78,84)
data_1[,ncol(data_1)+1] <- c(99,86,75,77,78,84)

R语言format data函数 r语言的data.frame_数据分析_03

添加新的一行

添加新的一行可以使用行角标进行赋值。

ID <- c(101,102,103,104,105,106)
name <- c('Tom','Bob','Tim','王二','张三','李四')
math_score <- c(88,70,65,77,64,80)
data_1 <- data.frame(ID,name,math_score,stringsAsFactors = F)

data_1[nrow(data_1)+1,] <- c(107,'Tony',54)

R语言format data函数 r语言的data.frame_R语言format data函数_04

数据框的删除

行的删除

行的删除一般用下角标进行删除。

在这里插入代码片ID <- c(101,102,103,104,105,106)
name <- c('Tom','Bob','Tim','王二','张三','李四')
math_score <- c(88,70,65,77,64,80)
data_1 <- data.frame(ID,name,math_score,stringsAsFactors = F)

data_1[-2,] # 删除指定行
data_1[-c(1,4),] # 删除吃c()向量里的行数

R语言format data函数 r语言的data.frame_r语言_05

列的删除

列的删除方式与行一样,一种于行一样利用下角标去删除。

ID <- c(101,102,103,104,105,106)
name <- c('Tom','Bob','Tim','王二','张三','李四')
math_score <- c(88,70,65,77,64,80)
data_1 <- data.frame(ID,name,math_score,stringsAsFactors = F)


data_1[-2] # 删除指定列
data_1[-c(1,2)] # 删除c()向量里的列数

R语言format data函数 r语言的data.frame_字符串_06

数据框的查找

与矩阵的索引一样,可以查找指定行、列或固定元素等。

指定行的查找

根据下角标可指定对应的行数。

```python
ID <- c(101,102,103,104,105,106)
name <- c('Tom','Bob','Tim','王二','张三','李四')
score <- c(88,70,65,77,64,80)
data_1 <- data.frame(ID,name,score,stringsAsFactors = F)

data_1[1,]  # 101  Tom    88
data_1[1:2,] # 第一二行

指定列的查找

列的查找可以和行的查找一样,也可以按照名字查找。

ID <- c(101,102,103,104,105,106)
name <- c('Tom','Bob','Tim','王二','张三','李四')
score <- c(88,70,65,77,64,80)
data_1 <- data.frame(ID,name,score,stringsAsFactors = F)

data_1[,2]
data_1[1:2]
data_1$name

which()函数的使用

与向量篇讲解的which函数一样,which函数返回的是满足条件的下角标,因此需要使用索引。

ID <- c(101,102,103,104,105,106)
name <- c('Tom','Bob','Tim','王二','张三','李四')
score <- c(88,70,65,77,64,80)
data_1 <- data.frame(ID,name,score,stringsAsFactors = F)

data_1[which(data_1$name=='张三'),] # 查询张三所在行的信息
data_1$score[which(data_1$name=='张三')] # 查询张三的成绩

数据框的修改

数据框的修改与矩阵的修改一样,先查询到需要修改的位置,然后利用赋值语句进行修改。

data_1$score[which(data_1$name=='张三')] <- 52
data_1[which(data_1$name=='张三'),] <- c(114,'李白',96)

R语言format data函数 r语言的data.frame_数据_07

总结

数据框是数据分析的常用数据形式,但其操作并不难,懂得数据框索引的原理是重点。对应的增删查改不过是简单的赋值,删除而已。