第一讲1 R介绍(没啥)
为什么使用R
- TB级数据的出现
- 数据产业的蓬勃发展
- 数据分析科学的快速发展
- 多源数据的快速融合
- R是为统计计算和绘图而生的语言和环境
是一套开源的数据分析解决方案
R的特性
- 免费的
- 一个全面的统计研究平台
- 拥有顶尖水准的制图功能
- 一个可进行交互式数据分析和探索的强大平台
- 轻松地从各种类型的数据源导入数据,包括文本文件、数据库管 理系统、统计软件,乃至专门的数据仓库
- 可运行于多种平台之上
获取
可以通过链接 https://www.r-project.org/ 免费获取
什么是包?
- 包是R函数、数据、预编译代码以一种定义完善的格式组成的集 合
- 计算机上存储包的目录称为库(library)
- 函数.libPaths()能够显示库所在的位置, 函数library()则可以 显示库中有哪些包
第2讲:创建数据集 - 数据集的概念
- 选择一种合适的数据结构来存储要研究的数据
- 将数据输入或者导入到数据结构中
R的内置数据集
查看R中所有内置的数据集: data(package = .packages(all.available = TRUE))
• 查看指定包中的数据集: data(package =“package name”)
• 查看某个数据集的信息: Help函数 or ?
第3讲: 数据结构中的向量与矩阵
向量
看成数组就行了,,,
创建向量
- 冒号方式创建
- c函数创建
- seq函数创建
具体的内容可以参考:https://www.jianshu.com/p/360243f5c338
矩阵
一个例子: a = matrix(1:12, nrow=4, dimnames = list(c("r1", "r2", "r3", "r4"), c("c1", "c2", "c3")))
表示的就是一个矩阵按列自动填入1到12,并且指定行列的名称, 结果为:
> a
c1 c2 c3
r1 1 5 9
r2 2 6 10
r3 3 7 11
r4 4 8 12
矩阵定义的参数: matrix(data,nrow,ncol,byrow,dimnames)
,byrow
表示按行还是按列填充,true为按行。
至于访问和py中的访问方法类似吧,,
第4讲:数据结构中的数组和数据框、因子与列表,数据的输入与数据集的标注
数组
使用 array(data,dim,dimnames)
来创建数组,其中dim表示维数向量(就是每一位的长度),后一个参数表示每一维名称,生成数据时是按列填充。
数据框
可以将不同的数据类型组合在一起的数据结构,就是一个多个列竖着摆放在一起的矩阵,同一列的类型一致。
创建数据框
使用 data.frame
函数创建数据框 data.frame(col1,col2,col3,…)
列向量col1,col2,col3…表示存储在数据框中 各列的数据,每一列的名字可以由函数names指定
选取数据框的元素
- 使用[ ],指定两个下标,类似矩阵的选取方法
p[2,][2]
- 可以指定列名访问
p["id"]
- 使用
$
记号选取某个特定变量p$id
attach() 和detach()
- attach():将数据框添加到R的搜索路径中
- detach(): 将数据框从搜索路径中移除
With()函数
- 使R表达式位于数据框的作用环境中
- 使用方法
- 局限:赋值只在此函数的括号内生效 解决:使用”<<-”代替”<-”
with(mtcars,{
summary(mpg)
plot(mpg,disp)
})
实例标识符
- 用以区分数据集中不同的个体
- 通过定义数据框时指定rowname选项指定实例 标识符
- 设置方法
patientdata <-data.frame(patientID, age,diabetes, status, row.names=patientID)
因子
因子: 用于对数据进行分类并将其存储为级别的数据对象,可以是一个类别的集合,也可以是一个有序项目的集合
因子水平:因子型变量可以取得的所有值
创建因子
- 使用函数factor()将原始表示类别的字符串映射到整数上
diabetes <- factor(diabetes)
- 创建有序的因子型向量:
status <- factor(status,ordered=TRUE)
- 展示一个因子的所有水平
levels(status)
列表
- 列表是可以包含多个不同数据元素的数据对象
- 可以包含向量、矩阵、数据框,甚至是列表
- 列表的各个元素称为列表项,列表项的数据类型可以不同,长度可以不同
创建列表
- 使用list()函数创建列表
Mylist <- list(obj1,obj2,obj3,…)
- 创建列表的同时指定每一个列表项的名称
Mylist <- list(name=obj1,name2 = obj2,…)
访问列表元素
- 使用双重方括号
- 指明代表某个成份的数字或名称
Mylist[[2]]
Mylist[[“ages”]]
- 使用一个方括号得到列表
Mylist[2]
数据的输入和数据集标注
从键盘输入数据
- 使用edit()调出文本编辑器来进行数据的输入
- 具体步骤:
- 创建一个空数据框(或矩阵),其中变量名和变量的类型需与理想中 的最终数据集一致;
- 针对这个数据对象调用文本编辑器,输入你的数据,并将结果保存回 此数据对象中
从带分隔符的文本文件中导入数据
- 使用read.table() 导入数据
mydfr<-read.table(file.header=logical_value, sep="delimiter", row.names="name")
- file: 带分隔符的ASCII文本文件
- header: 表明首行是否包含了变量名
- sep: 指定分隔数据的分隔符
- row.names :可选,指定一个或多个表示行标识符的变量
使用RODBC包来访问后缀名为xls的Excel文件
install.packages("RODBC")
library(RODBC)
channel<-odbcConnectExcel("myfile.xls")
mydataframe<-sqlFetch(channel,"mysheet")
odbcClose(channel)
导入SPSS数据
- 通过foreign包中的read.spss()函数导入到R中
- 使用Hmisc包中的spss.get()函数导入
导入SAS数据
- R对于SAS的较新版本支持的不好
- 解决办法:在SAS中使用PROC EXPORT将SAS数据集保存为一 个逗号分隔的文本文件,然后将导出的文件读取到R中
SAS程序:
proc export data=mydata
outfile="mydata.csv"
dbms=csv
run;
R程序: mydata<read.table("mydata.csv",header=TRUE,sep=",")
访问数据库管理系统
通过ODBC接口访问
数据集的标注
- 添加变量标签: 将变量标签作为变量名,然后通过位置下标来访问这个变量
Names(patientdata)[2] <- "age in ...."
- 添加值标签: 使用factor()函数
Patientdata$gender <- factor(Patientdata$gender, levels=c(1, 2), labels=c("m", "f"))
levels 表示变量实际值, labels 表示包含值标签的字符型变量.