专业编程基础技术教程

网站首页 > 基础教程 正文

R语言实战自学笔记-数据框2 r语言中数据框

ccvgpt 2024-10-12 15:00:39 基础教程 51 ℃

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"

R语言实战自学笔记-数据框2 r语言中数据框

最近发表
标签列表