先来创建下面操作需要用到的矩阵和数据框,下面我们就来说一说关于r语言实战每章小结?我们一起去了解并探讨一下这个问题吧!

r语言实战每章小结(R语言实战自学笔记-数据框2)

r语言实战每章小结

2.2.4 数据框

先来创建下面操作需要用到的矩阵和数据框

b3 <- matrix(1:15, 3, 5) # 构建矩阵b3,1到15的数值,3行,5列。 b3 # 显示b3。

## [,1] [,2] [,3] [,4] [,5] ## [1,] 1 4 7 10 13 ## [2,] 2 5 8 11 14 ## [3,] 3 6 9 12 15

name <- c("one", "two", "three", "four", "five", "six", "seven", "eight") # 构建字符型向量name。 factor <- c("a", "b", "a", "b", "a", "b", "a", "b") values <- c(1, 2, 3, 4, 5, 6, 7, 8) # 构建数值型向量values。 values2 <- c(8, 7, 6, 5, 4, 3, 2, 1) # 构建数值型向量values2。 A <- data.frame(name, factor, values, values2, row.names = c("r1", "r2", "r3", "r4", "r5", "r6", "r7", "r8")) # 创建数据框A。 A # 显示结果A。

## name factor values values2 ## r1 one a 1 8 ## r2 two b 2 7 ## r3 three a 3 6 ## r4 four b 4 5 ## r5 five a 5 4 ## r6 six b 6 3 ## r7 seven a 7 2 ## r8 eight b 8 1

str(A) # 查看数据结构

## 'data.frame': 8 obs. of 4 variables: ## $ name : chr "one" "two" "three" "four" ... ## $ factor : chr "a" "b" "a" "b" ... ## $ values : num 1 2 3 4 5 6 7 8 ## $ values2: num 8 7 6 5 4 3 2 1

4.数据框操作

is.data.frame(A) # is.data.frame()用于判定数据是否是数据框。若是,返回值为TURE,不是,返回FALSE。

## [1] TRUE

b3 <- as.data.frame(b3) # as.data.frame()用于将数据转换为数据框。这里将矩阵b3转为数据框。 b3 # 显示结果。

## V1 V2 V3 V4 V5 ## 1 1 4 7 10 13 ## 2 2 5 8 11 14 ## 3 3 6 9 12 15

colnames(b3)[3] <- "value" # 修改数据框y3第3列列名为value。要修改行名用rownames(A)[行号,列号] <- “新名称”。 b3 # 显示结果。

## V1 V2 value V4 V5 ## 1 1 4 7 10 13 ## 2 2 5 8 11 14 ## 3 3 6 9 12 15

colnames(b3) <- c("列1", "列2", "列3", "列4", "列5") # 对数据框b3的所有列重命名。 b3 # 显示结果。

## 列1 列2 列3 列4 列5 ## 1 1 4 7 10 13 ## 2 2 5 8 11 14 ## 3 3 6 9 12 15

A # 显示数据框A。

## name factor values values2 ## r1 one a 1 8 ## r2 two b 2 7 ## r3 three a 3 6 ## r4 four b 4 5 ## r5 five a 5 4 ## r6 six b 6 3 ## r7 seven a 7 2 ## r8 eight b 8 1

t(A) # 数据框转置。

## r1 r2 r3 r4 r5 r6 r7 r8 ## name "one" "two" "three" "four" "five" "six" "seven" "eight" ## factor "a" "b" "a" "b" "a" "b" "a" "b" ## values "1" "2" "3" "4" "5" "6" "7" "8" ## values2 "8" "7" "6" "5" "4" "3" "2" "1"

A[1,] <- c(1, 1, 1, 1) # 修改数据框A第1行的数据。 A # 显示结果A。

## name factor values values2 ## r1 1 1 1 1 ## r2 two b 2 7 ## r3 three a 3 6 ## r4 four b 4 5 ## r5 five a 5 4 ## r6 six b 6 3 ## r7 seven a 7 2 ## r8 eight b 8 1

A[,2] <- c(2, 4, 6, 8, 10, 12, 14, 16) # 修改数据框A第2列的数据。 A # 显示结果A。

## name factor values values2 ## r1 1 2 1 1 ## r2 two 4 2 7 ## r3 three 6 3 6 ## r4 four 8 4 5 ## r5 five 10 5 4 ## r6 six 12 6 3 ## r7 seven 14 7 2 ## r8 eight 16 8 1

A[1,1] <- "one" # 修改第1列第1行的值。 A # 显示结果A。

## name factor values values2 ## r1 one 2 1 1 ## r2 two 4 2 7 ## r3 three 6 3 6 ## r4 four 8 4 5 ## r5 five 10 5 4 ## r6 six 12 6 3 ## r7 seven 14 7 2 ## r8 eight 16 8 1

A$values <- as.character(A$values) # 将数据框A中values列类型从数值型改为字符型。 class(A$values) # 查看结果。

## [1] "character"

A$values <- as.numeric(A$values) # 从字符型转换会数值型。 class(A$values) # 查看结果。

## [1] "numeric"

A[9,] <- c("nine","a", 18, 0) # 给数据框A增加第9行。 A # 显示结果。

## name factor values values2 ## r1 one 2 1 1 ## r2 two 4 2 7 ## r3 three 6 3 6 ## r4 four 8 4 5 ## r5 five 10 5 4 ## r6 six 12 6 3 ## r7 seven 14 7 2 ## r8 eight 16 8 1 ## 9 nine a 18 0

A[,4] <- c(1, 3, 5, 7, 9, 11, 13, 15, 17) # 增加新列。 A # 显示结果。

## name factor values values2 ## r1 one 2 1 1 ## r2 two 4 2 3 ## r3 three 6 3 5 ## r4 four 8 4 7 ## r5 five 10 5 9 ## r6 six 12 6 11 ## r7 seven 14 7 13 ## r8 eight 16 8 15 ## 9 nine a 18 17

A$values1 <- c(1, 1, 2, 2, 3, 3, 4, 4, 5) # 增加新列,列名为values2。 A # 显示结果。

## name factor values values2 values1 ## r1 one 2 1 1 1 ## r2 two 4 2 3 1 ## r3 three 6 3 5 2 ## r4 four 8 4 7 2 ## r5 five 10 5 9 3 ## r6 six 12 6 11 3 ## r7 seven 14 7 13 4 ## r8 eight 16 8 15 4 ## 9 nine a 18 17 5

A <- data.frame(A, values3 = c("a", "b", "a", "b", "a", "b", "a", "b", "a")) # 在原有数据框的基础上使用data.frame()函数新增列。 A # 显示结果。

## name factor values values2 values1 values3 ## r1 one 2 1 1 1 a ## r2 two 4 2 3 1 b ## r3 three 6 3 5 2 a ## r4 four 8 4 7 2 b ## r5 five 10 5 9 3 a ## r6 six 12 6 11 3 b ## r7 seven 14 7 13 4 a ## r8 eight 16 8 15 4 b ## 9 nine a 18 17 5 a

A <- A[-9,] # 删除第9行。 A # 显示结果。

## name factor values values2 values1 values3 ## r1 one 2 1 1 1 a ## r2 two 4 2 3 1 b ## r3 three 6 3 5 2 a ## r4 four 8 4 7 2 b ## r5 five 10 5 9 3 a ## r6 six 12 6 11 3 b ## r7 seven 14 7 13 4 a ## r8 eight 16 8 15 4 b

A <- A[,-4] # 删除第4列数据。 A # 显示结果。

## name factor values values1 values3 ## r1 one 2 1 1 a ## r2 two 4 2 1 b ## r3 three 6 3 2 a ## r4 four 8 4 2 b ## r5 five 10 5 3 a ## r6 six 12 6 3 b ## r7 seven 14 7 4 a ## r8 eight 16 8 4 b

5.数据框排序

A[order(A$values1),] # 数据框排序,按照values1进行,order函数默认是升序。

## name factor values values1 values3 ## r1 one 2 1 1 a ## r2 two 4 2 1 b ## r3 three 6 3 2 a ## r4 four 8 4 2 b ## r5 five 10 5 3 a ## r6 six 12 6 3 b ## r7 seven 14 7 4 a ## r8 eight 16 8 4 b

A[order(-A$values1),] # 对数据框A以values1变量降序排列。

## name factor values values1 values3 ## r7 seven 14 7 4 a ## r8 eight 16 8 4 b ## r5 five 10 5 3 a ## r6 six 12 6 3 b ## r3 three 6 3 2 a ## r4 four 8 4 2 b ## r1 one 2 1 1 a ## r2 two 4 2 1 b

A[order(A$name, decreasing = T),] # 当排序依据变量为数值型时,前面加-就是按照降序排列,但是当变量为字符型时,就需在order函数中指定参数decreasing,T为TRUE,即降序。本例中为英文字母,所以降序按照英文字母首字母排序。

## name factor values values1 values3 ## r2 two 4 2 1 b ## r3 three 6 3 2 a ## r6 six 12 6 3 b ## r7 seven 14 7 4 a ## r1 one 2 1 1 a ## r4 four 8 4 2 b ## r5 five 10 5 3 a ## r8 eight 16 8 4 b

A[order(A$values, -A$values1),] # 以values升序排列,以values1为降序排列。

## name factor values values1 values3 ## r1 one 2 1 1 a ## r2 two 4 2 1 b ## r3 three 6 3 2 a ## r4 four 8 4 2 b ## r5 five 10 5 3 a ## r6 six 12 6 3 b ## r7 seven 14 7 4 a ## r8 eight 16 8 4 b

sort(A$values3) # 也可以用sort()函数进行排序。使用方法与order基本相同。

## [1] "a" "a" "a" "a" "b" "b" "b" "b"

,