一、R数据结构
R拥有包括标量、向量、矩阵、数组、数据框和列表用于存储数据的对象类型(R语言中的对象是指可以赋值给变量的任何事物,包括常量、数据结构、函数甚至图形)
1. 向量
向量是用于存储数值型、字符型或者逻辑型的一维数组,其通过c()来创建。向量的访问与其他语言访问机制类似,只是在R中,向量中第一个对象下标为一。
向量也可以通过如这种方式访问其中的元素。
2. 矩阵
矩阵是一个二维数组,矩阵中的每一个元素都拥有相同的模式(数值型、字符型或者逻辑型)。矩阵通过函数matrix()来创建。
MyMatrix <- matrix(vector, nrow=number_of_rows, ncol=number_of_cols, byrow=logical_value, dimnames=list(char_vector_rownames, char_vector_colnames))
其中,参数表明矩阵按行填充(TRUE)还是按列填充(FALSE),dimnames包含可选的、以字符型向量表示的行名和列名。
R中矩阵可以通过下标和方括号来选择矩阵中的行、列或者元素,下标可以为数值型向量。
3. 数组
数组与矩阵类似,但维度可以大于2。数组可以通过array函数来创建。
MyArray <- array(vector, dimensions, dimnames)
4. 数据框
数据框是在R中最常处理的数据结构。感觉形式上和pandas中的dataFrame类似。同样地,数据框在R中可以通过如下方式创建:
MyData <- data.frame(col1, col2, col3...)
在数据框中,每一列数据的模式必须唯一,但不同的列模式不需要相同。
4.1 attach()、detach()、with()
attach()函数可以将数据框添加到R的搜索路径中,detach()将数据框从搜索路径中移除。
with()函数可以解决当名称相同的变量不止一个时,attach函数的局限性。在with中使用**<<-**可以将对象保存到with()之外的全局环境中。
5. 因子
变量可以归结为名义型、有序型或者连续型变量。
名义型变量:没有顺序之分的类别变量。有序型变量:表示一种顺序型关系,而非数量关系。连续型变量:可以呈现为某个范围内的任意值,并同时表示了顺序和数量。
其中,名义型、有序性变量在R中成为因子。R使用factor()函数以一个整数向量的形式存储类别值,同时一个由字符串(原始值)组成的内部向量将映射到这些整数上(可以指定levels选项来覆盖默认的排序)。
数值型变量可以使用levels和labels参数来编码成因子。
6. 列表
列表就是一些对象的有序集合,列表允许整个若干(可能无关)对象到单个对象名下。列表的创建:
MyList <- list(name1=object1, name2=object2)
name1和name2等是用户可自己设定的为列表中对象的命名。
二、数据的输入
R可从键盘、文本文件、Excel、流行的统计软件、特殊格式的文件、多种关系型数据库管理系统、专业数据库、网站和在线服务中导入数据。
1. 从键盘输入
例程:
mydata <- data.frame(age=numeric(0), gender=character(0), weight=numeric(0))
mydata <- edit(mydata)
类似于的赋值语句将创建一个指定模式但不含实际数据的变量。
的一种简捷的等价写法是
2. 从带分隔符的文本文件导入数据
语法如下:
mydataframe<-read.table(file, options)
出现的错误:Error in make.names(col.names, unique = TRUE) : invalid multibyte string 2
解决办法:将文件编码修改为UTF-8并在read.table中加入encoding=“UTF-8"
3. 导入Excel数据
语法如下:
library(xlsx)
workbook <- "address"
mydataframe <- read.xlsx(workbook, n)
其中n表示要导入的工作表序号
三、数据集的标注
为了使结果更易解读,数据分析人员会对数据集进行标注。
1. 变量标签
R处理变量标签的能力有限,一种解决办法是将变量标签作为变量名,然后通过位置下标来访问这个变量。例程:
names(dataframe)[idx] <- "text you want to add"
2. 值标签
可以为类别型变量创建值标签,如:
dataframe$featuer <- factor(dataframe$feature, levels=c(1,2), labels=c("male", "female"))
四、处理数据对象的实用函数