数据集的概念
数据集一般情况下是由数据构成的一个矩形数据,行表示观测值,列表示变量。例如:
病例数据(引自R语言实战)
通过数据集,可以清楚的看到数据结构及其中包含的内容和数据类型。
数据结构
R中有很多用于储存数据的结构,包括标量、向量、数组、数据框和列表。它们在储存数据的类型、创建方式、结构复杂度,及用于定位和访问其中个别元素的标记等方面均有所不同。
R中的数据结构(引自R语言实战)
向量
向量(vector)是用于储存数值型、字符型或者逻辑型数据的一维数组。R中的c()函数可以用来创建向量,例如:
a<-c(1,2,3,4,5,6,7,8,9,10)
b<-c("one", "two", "three")
c<-c(TRUE, TRUE, TRUE, FALSE, TRUE)
#a是数值型向量,b是字符型向量,c是逻辑型向量(同一向量中无法混合不同模式的数据)。
#a<-c(2: 6) 和 a<-c(2,3,4,5,6)是一样的
矩阵
矩阵(matrix)是一个二维数组,只是每个元素都拥有相同的模式(数值型、字符型或逻辑型)。可以通过matrix()函数创建矩阵。一般可以使用如下格式:
mmatrix <- matrix(vector, nrow=number of rows, ncol=number of columns, byrow=logical value, dimnames=list, char vector rownames, char vector conames)
其中vector包含了矩阵的元素, nrow和ncol用以指定行和列的维数, dimnames包含了可选的、以字符型向量表示的行名和列名。选项byrow则表明矩阵应当按行填充( byrow=TRUE)还是按列填充( byrow=FALSE),默认情况下按列填充。代码清单2-1中的代码演示了matrix()函数的用法。
y<-matrix(1:20, nrow = 5, ncol = 4)
y
5×4的矩阵
cells <- c(1,26,24,68)
rnames <- c("A1","A2")
cnames <- c("B1","B2")
y1<-matrix(cells, nrow = 2, ncol = 2, byrow = T, dimnames = list(rnames, cnames))
y1
2×2 行名为A和列名为B的矩阵
数组
数组(array)和矩阵类似,但其维度可以大于2。数组可以通过array()函数创建,形式如下:
myarry <- array(vector, dimensions, dimnames)
其中vector包含了数组中的数据, dimensions是一个数值型向量,给出了各个维度下标的最大值,而dimnames是可选的、各维度名称标签的列表。我们创建一个三维(2×3×4)数据型数组的代码如下:
dim1 <- c("a1","a2")
dim2 <- c("b1","b2")
dim3 <- c("c1","c2")
all <- array(1:24, c(2,3,4), dimnames(dim1, dim2, dim3)
all
2×3×4三维数值型数组
数据框
数据框(data frame)是R中最常见处理数据结构。例如病例数据集包含数值型和字符型数据。由于该数据有多种模式(数值型和字符型同时存在),则无法将此数据集放入一个矩阵,因此在这种情况下应该使用数据框。
data <- data.frame(col1, col2, col3,....)
列向量col1, col2, col3,… 可为任何类型(如字符型、数值型或逻辑型)。每一列的名称可由函数names指定。
a<-c(1,2,3,4,5,6)
b<-c(23,22,23,22,12,32)
c<-c("A","B","C","A","B","C")
data<-data.frame(a, b, c)
data
每一列数据的模式必须唯一,不过你却可以将多个模式的不同列放到一起组成数据框。由于数据框与分析人员通常设想的数据集的形态较为接近,我们在讨论数据框时将交替使用术语列和变量。
因子
因子(factor)是R语言中比较特殊的一个数据类型, 它是一个用于存储类别的类型。R中用因子代表数据中分类变量,如性别、省份、职业。 有序因子代表有序量度,如打分结果,疾病严重程度等。用factor()函数把字符型向量转换成因子,如:
x <- c("男", "女", "男", "男", "女")
sex <- factor(x)
sex
attributes(sex)
levels(sex)
as.numeric(sex)
factor(x, levels = sort(unique(x), na.last = TRUE),
labels, exclude = NA, ordered = FALSE)
li1 <- factor(c('男', '女'))
li2 <- factor(c('男', '男'))
c(li1, li2)
factor(c(as.character(li1), as.character(li2)))
列表
列表(list)是R数据类型中最为复杂的一种。一般来说,列表就是一些对象或者成分的有序集合。列表允许被整合若干对象到单个对象名下。例如,某个列表可能是若干向量、矩阵、数据框,甚至其他列表的组合,可以使用list()函数创建列表:
mylist <- list(ob1, ob2,....) #对象可以是目前为止讲到的任何结构。
示例代码:
a <- "my list"
b <- c(1,2,3,4,5)
c <- matrix(1:5, nrow = 5)
d <- c("A", "B", "C")
mylist <- list(title = a, num = b)
list示例
本例创建了一个列表,其中有四个成分:一个字符串、一个数值型向量、一个矩阵以及一个字符型向量。可以组合任意多的对象,并将它们保存为一个列表。
注意事项
注意事项(引自R语言实战)参考文献
Robert I. Kabacoff (著). R语言实战(高涛/肖楠/陈钢 译). 北京: 人民邮电出版社.
网友评论