一、R语言介绍
随着数据量的极剧增加,需要从海量的数据中收集有用的信息------>数据挖掘
数据分析科学逐渐火热。下图是典型的数据分析步骤
1.1、为什么要使用R?
主要的总结几点就是:
1、R是完全免费的
2、拥有顶尖的制图水准
3、交互式的强大平台
4、有很多可以直接利用的数据库
1.2、R的安装和获取
在网址:http://cran.r-project.org ,进行免费下载,然后傻瓜式安装,如果出现相关问题,百度就可以很好解决。这里不过多介绍。
推荐使用Rstudio作为编译器,方便。
1.3、R的使用
R是区分大小写的解释型语言。
数据类型:向量,矩阵,数据框,列表(各种对象的集合)
使用<-表示赋值和=,相同(不推荐使用等号赋值)
age <- c(1,3,5,2,11,9,3,9,12,3)#向量age weight <- c(4.4,5.3,7.2,5.2,8.5,7.3,6.0,10.4,10.2,6.1)#向量weight mean(weight)#求平均值 sd(weight)#求标准差 cor(age,weight)#求相关度 plot(age,weight)#以图形的形式显示
注:后面会介绍自定义图形(修改图形参数)
在命令窗口输入demo(),会出现很多图像演示:demo(persp),demo(graphics)等等
获取帮助
R中的帮助函数:
管理R的工作空间的函数:
示例代码:
setwd("C:/myprojects/project1")#设置当前工作目录,注意斜杠的正反 options() options(digits=3)#显示为具有小数点后三位有效数字的格式 x <- runif(20) summary(x) hist(x) q()
输入和输出:
函数source("filename")可在当前会话中执行一个脚本。如果文件名中不包含路径, R将
假设此脚本在当前工作目录中。
函数c()以向量的形式输入
二、创建数据集
按照个人要求的格式来创建含有研究信息的数据集,这是任何数据分析的第一步。
选择一种数据结构来存储数据;
将数据输入或导入到这个数据结构中。
2.1数据集的概念
数据集通常是由数据构成的一个矩形数组, 行表示观测,列表示变量。
R中有许多用于存储数据的结构,包括标量、向量、数组、数据框和列表。
R可以处理的数据类型(模式)包括数值型、字符型、逻辑型( TRUE/FALSE)、复数型(虚
数)和原生型(字节)。
2.2、数据结构
R拥有许多用于存储数据的对象类型,包括标量、向量、矩阵、数组、数据框和列表。
在R中, 对象( object)是指可以赋值给变量的任何事物,包括常量、数据结构、函数,
甚至图形。对象都拥有某种模式,描述了此对象是如何存储的,以及某个类,像print这样的
泛型函数表明如何处理此对象。
因子( factor)是名义型变量或有序型变量。它们在R中被特殊地存储和处理。
2.2.1向量
示例:
a <- c(1, 2, 5, 3, 6, -2, 4) b <- c("one", "two", "three") c <- c(TRUE, TRUE, TRUE, FALSE, TRUE, FALSE)
a是数值型向量, b是字符型向量,而c是逻辑型向量。 单个向量中的数据必须
拥有相同的类型或模式(数值型、字符型或逻辑型)。
标量是只含一个元素的向量,例如f <- 3、 g <- "US"和h <- TRUE。它们用于保存
常量。
向量元素的访问示例:(从1开始)
a <- c("k", "j", "h", "a", "c", "m") a[3]#[1] "h" a[c(1, 3, 5)]#[1] "k" "h" "c" a[2:6]#[1] "j" "h" "a" "c" "m"
2.2.2、矩阵
过函数matrix()创建矩阵。
2.2.3、数组
2.2.4、数据框
数据框可通过函数data.frame()创建:
mydata <- data.frame(col1, col2, col3,...)
其中的列向量col1、 col2、 col3等可为任何类型(如字符型、数值型或逻辑型)。
patientID <- c(1, 2, 3, 4) age <- c(25, 34, 28, 52) diabetes <- c("Type1", "Type2", "Type1", "Type1") status <- c("Poor", "Improved", "Excellent", "Poor") patientdata <- data.frame(patientID, age, diabetes, status) patientdata
将多个模式按照列放到一起组成数据框。
数据框的取值:
patientdata[1:2]
patientdata[c("diabetes", "status")]
patientdata$age
如果想生成变量的级联表:
table(patientdata$diabetes, patientdata$status)
结果:
Excellent Improved Poor Type1 1 0 2 Type2 0 1 0在每个变量名前都键入一次patientdata$可能会让人生厌,所以不妨走一些捷径。 1. attach()、 detach()和with()
函数attach()可将数据框添加到R的搜索路径中 。
summary(mtcars$mpg) plot(mtcars$mpg, mtcars$disp) plot(mtcars$mpg, mtcars$wt)
上面代码可以替换成:
attach(mtcars) summary(mpg) plot(mpg, disp) plot(mpg, wt) detach(mtcars)
函数detach()将数据框从搜索路径中移除。 detach()并不会对数据框本身做任何处理。 防止重名的影响
> mpg <- c(25, 36, 47) > attach(mtcars) The following object(s) are masked _by_ '.GlobalEnv': mpg > plot(mpg, wt) Error in xy.coords(x, y, xlabel, ylabel, log) : 'x' and 'y' lengths differ > mpg [1] 25 36 47
上面代码可以改写成:
with(mtcars, { print(summary(mpg)) plot(mpg, disp) plot(mpg, wt) })
在这种情况下,花括号{}之间的语句都针对数据框mtcars执行,这样就无需担心名称冲突了。
函数with()的局限性在于,赋值仅在此函数的括号内生效。考虑以下代码:
> with(mtcars, { stats <- summary(mpg) stats }) Min. 1st Qu. Median Mean 3rd Qu. Max. 10.40 15.43 19.20 20.09 22.80 33.90 > stats Error: object 'stats' not found
如果你需要创建在with()结构以外存在的对象,使用特殊赋值符<<-替代标准赋值符( <-)即可,
> with(mtcars, { nokeepstats <- summary(mpg) keepstats <<- summary(mpg) }) > nokeepstats Error: object 'nokeepstats' not found > keepstats Min. 1st Qu. Median Mean 3rd Qu. Max. 10.40 15.43 19.20 20.09 22.80 33.90
相对于attach(),多数的R书籍更推荐使用with()。
2、实例标识符
在R中,实例标识符( case identifier)可通过数据框操作函数中的rowname选项指定。例如,语句:
patientdata <- data.frame(patientID, age, diabetes,status,row.names=patientID)
将patientID指定为R中标记各类打印输出和图形中实例名称所用的变量。
2.2.5、因子
变量可归结为名义型、有序型或连续型变量。
名义型变量是没有顺序之分的类别变量。
糖尿病类型Diabetes( Type1、 Type2)是名义型变量的一例。即使在数据中Type1编码为1而Type2编码为2,这也并不意味着二者是有序的。
有序型变量表示一种顺序关系,而非数量关系。
病情Status( poor、 improved、 excellent)是顺序型变量的一个上佳示例。我们明白,病情为poor(较差)病人的状态不如improved(病情好转)的病人,但并不知道相差多少
连续型变量可以呈现为某个范围内的任意值,并同时表示了顺序和数量。
年龄Age就是一个连续型变量,它能够表示像14.5或22.8这样的值以及其间的其他任意值。很清楚, 15岁的人比14岁的人年长一岁。
类别(名义型)变量和有序类别(有序型)变量在R中称为因子( factor)。 因子在R中非常重要,因为它决定了数据的分析方式以及如何进行视觉呈现。
函数factor()以一个整数向量的形式存储类别值,整数的取值范围是[1...k](其中k是名义型变量中唯一值的个数),同时一个由字符串(原始值)组成的内部向量将映射到这些整数上。
举例来说,假设有向量:diabetes <- c("Type1", "Type2", "Type1", "Type1")语句diabetes <- factor(diabetes)将此向量存储为(1, 2, 1, 1),并在内部将其关联为1=Type1和2=Type2(具体赋值根据字母顺序而定)。
要表示有序型变量,需要为函数factor()指定参数ordered=TRUE。给定向量:
status <- c("Poor", "Improved", "Excellent", "Poor") status <- factor(status, ordered=TRUE)
语句status <- factor(status, ordered=TRUE)会将向量编码为(3, 2, 1, 3),并在内部将这些值关联为1=Excellent、 2=Improved以及3=Poor。另外,针对此向量进行的任何分析都会将其作为有序型变量对待,并自动选择合适的统计方法。
对于字符型向量,因子的水平默认依字母顺序创建。 你可以通过指定levels选项来覆盖默认排序。例如:
status <- c("Poor", "Improved", "Excellent", "Poor") status <- factor(status, ordered=TRUE) status status <- factor(status, order=TRUE, levels=c("Poor", "Improved", "Excellent")) status
请保证指定的水平与数据中的真实值相匹配,因为任何在数据中出现而未在参数中列举的数据都将被设为缺失值。
数值型变量可以用levels和labels参数来编码成因子。如果男性被编码成1,女性被编码成2,则以下语句:
而且所有不是1或2的性别变量将被设为缺失值。
sex <- factor(sex, levels=c(1, 2), labels=c("Male", "Female"))
代码清单2-6演示了普通因子和有序因子的不同是如何影响数据分析的。
三、图形初阶
四、基本数据管理
五、高级数据管理