- 数据框是一种表格式的数据结构,旨在模拟数据集,通常由数据构成的矩形数组,行表示观测,列表示变量。
- 数据框实际是一种列表,列表中的元素是向量,构成数据框的列,每一列必须有相同的长度,所以数据框是矩形结构,而且数据框的列必须命名。
一、矩阵&数据框
- 数据框形状上很像矩阵
- 数据框是比较规则的列表
- 矩阵必须为同一数据类型,数据框每一列必须为同一类型,每一行可以不同
e.g. Excel表格
二、数据框的创建
①根据已有数据进行合并
> state <- data.frame(state.abb,state.x77) 👉👉👉 data.frame( )
②将向量转换为数据框
> data1 <- c(1:20)
> data1
[1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
> class(data1)
[1] "integer"
> dim(data1) 此时向量没有维度,只有长度
NULL
> length(data1)
[1] 20
> dim(data1) <- c(4,5) 赋予向量维度dim(),查看两种方法Ⅰdim() Ⅱattribute()
> dim(data1)
[1] 4 5
> attributes(data1)
$dim
[1] 4 5
> class(data1) 此时类型:矩阵
[1] "matrix" "array"
> patients <- c("Ate",'Bet',"Cat","Doll")
> a <- data.frame(patients,data1) 与①相同,data.frame()构建数据框
> a
patients X1 X2 X3 X4 X5
1 Ate 1 5 9 13 17
2 Bet 2 6 10 14 18
3 Cat 3 7 11 15 19
4 Doll 4 8 12 16 20
> class(a) 此时类型:数据框
[1] "data.frame"
> cnames <- c("patients","age","sex","illness","good") 定义列名colnames()
> colnames(a) <- cnames
> a
patients age sex illness good NA
1 Ate 1 5 9 13 17
2 Bet 2 6 10 14 18
3 Cat 3 7 11 15 19
4 Doll 4 8 12 16 20
数据框的索引
> state[1] 由于每一行不一定类型相同,因此默认索引第几列
> state[2,] 加了“,”之后为索引第几行√
> state[c(2,4)] 同样,不要忘记c() →第2、4列
> state[,"state.abb"] 也可以用列名来索引 →" " !!!
> state[state.abb] ❌❌
Error in `[.data.frame`(state, state.abb) : 选择了未定义的列
两种索引结果对比——逗号,正确应该为第二种?有列的形式?
索引行
> state["state.abb","state.x77"]
NULL
> state["state.abb","state.area"]
[1] NA 貌似只能索引一个
Dollar 符 $
快速选择行列→绘制散点图😘😘😘
Attach 函数
直接引用列数据<(^-^)>
Detach函数
With函数
> with(women,{height}) 大括号{}→同样不需要用$符 √
[1] 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
> with(women,{weight})
[1] 115 117 120 123 126 129 132 135 139 142 146 150 154 159 164
> with(women,{sum(weight)})
[1] 2051