R 基础培训 Mango - Solutions ShangHai China
Outline 共五章 R背景&运行环境 R的数据类型 数据操作函数 编写R程序 统计相关的函数 示例 R背景, R VS SAS, R资源, R版本控制与更新,R帮助 R安装, R界面, R的命令行,基本语法,R对象,R工作空间,R的基础包,脚本窗口,帮助系统 R的数据类型 vector,matrix,data frame,array,list, ... 数据操作函数 函数调用,数值函数,字符函数,逻辑函数,缺失值函数,data frame函数, apply函数,输入输出函数 编写R程序 控制流,函数argument, 返回对象,创建函数 统计相关的函数 抽样, 分布函数,常用统计分析函数 示例
R? Huh? Where can we get it? Background: http://cran.r-project.org/ Developed from S language (AT&T Bell Lab) Freeware developed by statisticians and programmers (Ross Ihaka and Robert Gentleman) Platform designed for analysis of data Data manipulation, statistical analysis, plots, etc. Like Splus, SAS, Matlab, Stata, SPSS, … Where can we get it? http://cran.r-project.org/ Note: install on your computer even if you are not admin.
R与SAS R 与 SAS 的比较
R的安装和更新 R的版本 R的更新(每三个月更新一次) Linux Macos X Windows update.packages(checkBuilt = TRUE, ask = FALSE) 1 # or install.packages(.packages(all = TRUE))
R帮助系统 Help system Session setting and saving objects help(topic), ??topic, help.search(‘topic’), apropos('topic'), help.start(), RSiteSearch('topic') Session setting and saving objects File-”Change dir”, File-”Load/Save Workspace”, File-”Load/Save History”
R 在window下面的操作界面
R 包 显示本地所有安装的R包 Other packages .packages(TRUE) library() http://cran.r-project.org/
R 数据类型 基本数据类型: 高级数据类型: 特殊值: 数字,字符,布尔,因子,日期,… NA, NaN, Inf 矩阵,数据框,列表,… vector.n <- c(1,4,7,9) vector.c <- c("a","a","b","d","c","a","b","b") vector.f <- factor(vector.c) levels(vector.f) 高级数据类型: 矩阵,数据框,列表,… matrix.a <- matrix(100, ncol=10, byrow=TRUE) data.df <- data.frame(x=1:3, y=c("a", "b", "c")) list.a <- list(x=c(1, 2, 3), y=c("a", "b", "c"), z=data.df ) 特殊值: 缺失值(missing value)和无限值 (infinite value) NA, NaN, Inf
R 数据的简单操作 对象属性: 查看对象内容 查看缺失值(missing value)和无限值 (infinite value) attributes(),data.class (),length () 改变对象属性 as.character(), as.numeric(), as.factor(), as.POSIXct(), as.Date 查看对象内容 vector.c[1], vector.c[c(1,3)], data.df[1, 2], data.df[2, ], data.df[, 2] 查看缺失值(missing value)和无限值 (infinite value) is.na(), is.nan(), is.finite(x), is.infinite(x)
R 字符数据的操作 字符操作 字符合并 字符取长度 字符取子集 字符代替 字符分离 “abcbc” <> paste("abc", "bc", sep="") 字符取长度 nchar("abcccc") 字符取子集 substr("abcdef", 2, 3) substring("abcdef", 3) 字符代替 gsub("abc", "", c("abc", "abcc", "abcbc")) 字符分离 split(“abcd”, “c”, fixed=T)
R data frame的操作 矩阵、数据框的操作 列或者行合并:cbind(), rbind() 通过公有列合并数据:merge() 数据形状转化:reshape() cbind(A,B) rbind(A,B) A A B B A reshape(A) merge(A,B) A A^B A-B B-A wide long
R 特别的apply函数 行、列或者代替循环的操作函数 Sapply, apply, lappy, tapply, aggregate, by, with
read.table() and write.table() 数据的输入输出 数据与外部设备的交互 数据读入:read.table, read.csv, read.xls, scan, load,… 数据输出: write.table, WriteXLS, write, save, … read.table() and write.table() example.csv Category,Value Group.1,0.575652002 Group.1,0.127900842 ...and so forth... >df .data <- read.table(paste(DataDir,”example.csv”, sep=""), header = TRUE, sep = ",", as.is = T) After processing this data… >write.table(df.summary, file=paste(ResultDir, “Summary Result.csv",sep=""), sep=",", row.names=FALSE) df.summary Category,Mean,... Group.1,0.634002,... Group.2,0.911242,... Group.3,0.138726,... ...and so forth...
R 常用的函数汇总 基础函数 加减乘除 逻辑运算 数学函数 常用的函数 常用的统计函数 矩阵运算函数 +,-, *,ˆ, /,%%,%/% < >, <= ,>=, ==,!=, &, | 数学函数 abs, sqrt, round, log, exp, sin, cos, tan, asin, acos, atan 常用的函数 setwd, getwd, setClass c, seq, rep, cut, table, is.element, %in% unique, order, sort, duplicated, replace, setdiff, intersect, union, names, colnames, row.names dir, list.files, dir.create 常用的统计函数 max, min, range, diff sum, mean, median, IQR, quantile, sd, var, cumsum, mod 矩阵运算函数 colSums, colMeans, rowSums, rowMeans, t, diag, %*%, solve(a,b), eigen(x), dist(x)
写自己的R程序 Mango - Solutions ShangHai China
控制流 if (test) { ...true statements... } else { ...false statements... for (var in seq) exp, while (could) exp, repeat exp, break, next, ifelse
控制流示例 ## try if x <- 10 if(x>10) { print("x = 10") } else print("x <> 10") ## try for sumx <- 0 for (x in 1:10) { sumx <- sumx+x } sumx
创建函数 “函数名” <- function(a, b, c, …) { exp(a, b, c) }
创建函数示例 "myfunction" <- function(x, y, z) { if(!is.numeric(x)|!is.numeric(y)|!is.numeric(z)) stop("parameter must be numeric ") x.list <- c(sum(c(x,y,z), na.rm=T), mean(c(x,y,z), na.rm=T), sd(c(x,y,z), na.rm=T)) x.list }
统计相关的函数 Mango - Solutions ShangHai China
抽样 sample(x, n, replace = T, prob = p) 以概率p,放回的从x中抽出n项
怎么求正态分布的密度,分为点,概率,产生随机数? 分布相关 怎么求正态分布的密度,分为点,概率,产生随机数?
均值, 标准差,中位数, 众数, IQR, 分位数 基本的统计量 均值, 标准差,中位数, 众数, IQR, 分位数 均值 PK 中位数 x <- rnorm(50, 4, 2) hist(x) mean(x);median(x) x[10] <- 200 mean(x);median(x);
T检验 例:患有某种肿瘤的大白鼠接受不同的实验处理后(对照组:未服药,服抗癌A 药),比较2周后体内平均存活的肿瘤细胞数是否有差异? 比较两个样本的均值是否相等: 例:患有某种肿瘤的大白鼠接受不同的实验处理后(对照组:未服药,服抗癌A 药),比较2周后体内平均存活的肿瘤细胞数是否有差异? T-test的前提条件: 两样本独立,并且服从正态分布, 须先做同方差检验 R中的实现: t.test()
方差分析 比较多个样本的均值是否相等: 例:患有某种肿瘤的大白鼠接受不同的实验处理后(对照组:未服药,服抗癌A 药,服抗癌B药, 服抗癌C药),比较2周后体内平均存活的肿瘤细胞数是否有差异? 方差分析的前提条件: 样本独立,并且服从正态分布, 等方差 R中的实现: anova() 检验: m0=ma=mb=mc ??
两样本方差分析 PK T检验 在等方差的条件下,两者等同
线性相关 例:生长发育中的身高和年龄的关系? 描述两变量之间的线性相关程度 线性相关的前提条件: X,Y 服从正态分布 R中的实现: cor.test() 检验: r=0 ?? r 为相关系数
一元线性回归 例:生长发育中的身高和年龄的关系? 描述变量之间的线性相关程度 y=a+bx+ε 线性相关的前提条件: 随机误差值相互独立,且同方差,随机误差~N(0, σ2) R中的实现: lm() 检验: slope=0 ??
线性相关 PK 一元线性回归 两者等同 检验相关系数:r=0 ?? 检验: slope=0 ??
? 多元线性回归 例:生长发育中的身高与年龄和体重的关系? 描述一个因变量跟多个自变量之间的线性关系 y=b0+b1x1+b2x2+ε 线性相关的前提条件: Y服从独立等方差正态分布, x1, x2…..独立 R中的实现: lm(y~x1+x2+….) 检验: model成立?? ?
Q&A
Thanks