创建数据集
文章目录
创建数据集数据集的概念数据结构向量矩阵数组数据框因子列表数据集的概念
数据集通常是由数据构成的一个矩形数组,行表示观测,列表示变量。
R中有许多用于存储数据的结构,包括标量、向量、数组、数据框和列表。
数据结构
向量
向量是用于存储数值型、字符型或逻辑型数据的一维数组。
标量是只含一个元素的向量,用于保存常量。
注:单个向量中的数据必须拥有相同的类型或模式(数值型、字符型或逻辑型)。同一向量中无法混杂不同模式的数据。
创建向量:c()
创建数值型向量
x <- 100a <- c(1, 2, 5, 3, 6, -2, 4)
创建字符型向量
name <- "Jasson" b <- c("one", "two", "three")
创建逻辑型向量
c1 <- TRUEc2 <- c(TRUE, TRUE, TRUE, FALSE, TRUE, FALSE)
定位和访问向量中的元素
访问向量中的第m个元素(和第n个元素),逗号用于访问向量中的指定元素
a[3]b[c(1,3)]
使用冒号用于访问向量中第m个元素~到第n个元素
c2[2:4]
判断数值类型是否为向量
is.vector(a)
矩阵
矩阵是一个二维数组,只是每个元素都拥有相同的模式(数值型、字符型或逻辑型)。
创建矩阵:matrix()
创建矩阵
eg1. 数字1~20,4行5列,按行填充
x1 <- matrix(1:20,nrow = 4,ncol = 5,byrow = TRUE)
eg2. 定义一个4*4矩阵,名为Mat,矩阵第一行4 5 8 9,矩阵第二行 1 6 3 2,矩阵第三行 0 1 0 1,矩阵第四行5 2 0 1
m <- c(4,5,8,9,1,6,3,2,0,1,0,1,5,2,0,1)Mat <- matrix(m,nrow = 4,ncol = 4,byrow = TRUE)
定位和访问矩阵中的元素
定位位于第2行,第1的元素
Mat[2,1]
定位第2行所有元素
Mat[2,]
定位第1列所有元素
Mat[,1]
定位位于第1行,第2、3列的元素
Mat[1,c(2,3)]
Mat[1,2:3]
定位位于第1、2行,第2、3列的元素
Mat[1:2,2:3]
Mat[c(1,2),c(2,3)]
矩阵行列的命名
f <- c(3,5,2,4)rname <- c("R1","R2")cname <- c("C1","C2")y <- matrix(f,nrow = 2,ncol = 2,dimnames = list(rname,cname))y
判断是否为矩阵
is.matrix(y)
数组
数组(array)与矩阵类似,但是维度可以大于2。三维包括行、列、层。
创建数组:array()
创建数组
f1 <- c("A1","A2")f2 <- c("B1","B2","B3")f3 <- c("C1","C2","C3")z <- array(1:18,c(2,3,3),dimnames = list(f1,f2,f3))z
定位和访问数组中的元素(位于第2个矩阵的第1行第2列的数)
z[1,2,2]
判断是否为数组
is.array(z)
数据框
数据框中不同的列可以包含不同模式(数值型、字符型等)的数据。由于数据有多种模式,无法将此数据集放入一个矩阵,在这种情况下,使用数据框是最佳选择。
创建数据框:data.frame()
创建一个数据框
ID <- c(1001,1002,1003)NAME <- c("张三","李四","王五")MATH <- c(90,85,95)ENG <- c(85,90,90)Score <- data.frame(ID,NAME,MATH,ENG)Score
定位和访问数据框中的元素
访问数据框中的列
Score[1:2]
Score[2]
Score[,2]
访问数据框中的行
Score[2,]
访问数据框中的变量
Score$NAMEScore[c("MATH","ENG")]summary(Score$MATH)
summary()函数:获取描述性统计量
判断是否为数据框
is.data.frame(Score)
调用数据框(attach),移除调用(detach)
函数attach()可将数据框添加到R的搜索路径中。
函数detach()将数据框从搜索路径中移除。
attach(md)summary(Income)detach(md)
上述代码等同于:> summary(md$Income)
with()调用数据框
with(md,{summary(Income)})
因子
变量可归结为名义型、有序型或连续型变量,类别(名义型)变量和有序类别(有序型)变量在R中称为因子(factor)。
创建因子:factor()
因子的使用
eg:将向量Type存储为(1, 2, 3, 1),并在内部将其关联为1=T1、2=T2和3=T3:
Type <- c("T1","T2","T3","T1")TF <- factor(Type)TF
要表示有序型变量,需要为函数factor()指定参数ordered=TRUE:
Type <- c("T1","T2","T3","T1")TF <- factor(Type, order=TRUE)TF
对于字符型向量,因子的水平默认依字母顺序创建:
status <- c("Poor", "Improved", "Excellent", "Poor")status <- factor(status, ordered=TRUE)status
即将向量编码为(3, 2, 1, 3),并在内部将这些值关联为1=Excellent、2=Improved以及3=Poor。
但你可以通过指定levels选项来覆盖默认排序:
status <- factor(status, ordered=TRUE, levels=c("Poor", "Improved", "Excellent"))
各水平的赋值将为1=Poor、2=Improved、3=Excellent。
对于数值型变量,可以用levels和labels参数来编码成因子:
sex <- c(1,2,1,1)sex <- factor(sex, levels=c(1, 2), labels=c("Male", "Female"))sex
即男性被编码成1,女性被编码成2。
判断字符型变量Type是否转换为因子TF:
is.factor(TF)
列表
列表(list)是R的数据类型中最为复杂的一种。一般来说,列表就是一些对象(或成分,
component)的有序集合。某个列表中可能是若干向量、矩阵、数据框,甚至其他列表的组合。
创建列表:list()
创建一个列表
g <- "My First List" h <- c(25, 26, 18, 39) j <- matrix(1:10, nrow=5) k <- c("one", "two", "three") mylist <- list(title=g, ages=h, j, k)mylist
定位和访问列表中的元素
mylist[2]
mylist["ages"]
mylist$ages
判断数据类型是否为列表:
is.list(mylist)
还可以判断列表中的其他数据类型:
is.matrix(j)