网站首页 > 基础教程 正文
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"
- 上一篇: C++右值引用 C++右值引用用法
- 下一篇: 用R语言做数据分析——R的四种图形系统
猜你喜欢
- 2024-10-12 R数据分析:倾向性评分匹配实例操作
- 2024-10-12 要为学习神经网络奠定基础,你需要认真读读R深度学习
- 2024-10-12 怎样快速入门Arduino?(二十三)—TCS3200颜色传感器
- 2024-10-12 把数据输入R之后,如何进行简单的操作(一)
- 2024-10-12 聚类分析5—物种集合-数量生态学:R语言的应用 第四章
- 2024-10-12 一文读懂R中的探索性数据分析(附R代码)
- 2024-10-12 从0开始自制解释器——添加对括号的支持
- 2024-10-12 常见编程语言:Go:Go语言函数与方法
- 2024-10-12 Python基础之变量、循环、函数(二)
- 2024-10-12 R语言中使用scan函数从键盘获取数据的方法
- 最近发表
- 标签列表
-
- gitpush (61)
- pythonif (68)
- location.href (57)
- tail-f (57)
- pythonifelse (59)
- deletesql (62)
- c++模板 (62)
- css3动画 (57)
- c#event (59)
- linuxgzip (68)
- 字符串连接 (73)
- nginx配置文件详解 (61)
- html标签 (69)
- c++初始化列表 (64)
- exec命令 (59)
- canvasfilltext (58)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- node教程 (59)
- console.table (62)
- c++time_t (58)
- phpcookie (58)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)