一、R准备
1. getwd() setwd("d:/") 查看设置工作目录
2. install.packages('lme4') 安装包
library() 查看已安装包
old.packages() update.packages() 包更新
3.ls() rm(y) rm(list=ls()) 查看、删除已有变量
4.数据导入导出
library(foreign)
gss <- read.csv("gssdummy.csv")
write.csv(gss,"gssdummy.csv")
二、R基础
1.数据类型
①integer 整型 ②character 字符型 ③numeric 数值型(double) ④logical 逻辑型
2.数据结构 https://www.jianshu.com/p/47f15d41029f
①向量 c() e.g. id = c(1, 2, 3, 4, 5) typeof(id) # "double" 向量内须统一数据类型
rev(a)将a反序 id[-2] 删第二个元素 n %in% a 判断n是否在a中
②矩阵 matrix() e.g. x=matrix(c(1:9),ncol=3,nrow=3) x[1, 2] # 4(一行二列)
行列命名 rownames(x)=c("A","B","C")
查看维数 dim(x) # 3 3
③数组 array() e.g. xx = array(1:24, c(3, 4, 2)) 维度调整dim(xx) = c(2, 5)
④因子factor() 有level e.g. a=factor(c('a','b','a')) #[1] a b a Levels: a b
(实际数据以level索引标识 levels “a”,”b”:1 2 1 ※故typeof(a)返回integer)
⑤列表 list() 多个向量的组合(可描述一个表),类似dict 可用lst[[1]],lst$key索引
lst <- lst[-4] lst$name <- NULL均可用于删除
lst$new_name<-c(…) 对list新增内容
lst <- c(lst,otherlst) 合并list
unlist(lst)将list转为命名向量
⑥数据框 data.frame() 规整的二维表,其中每列为factor
3.table()可用于groupby统计 e.g. t=table(a,g) #ag为等长factor,返回二维透视表
margin.table(t,1) 只看a的level汇总值
prop.table(t) prop.table(t,1) 查看百分比
4.length() 查长度,mode() typeof() 查数据类型
5.序列
①seq(本质上产生一个向量)
e.g. 1:1000 5:0 seq(from=1,to=5,length=4) seq(length=10,from=-2,by=.2)
②rep()产生重复序列 e.g. rep('hi',3) rep(1:2,3) rep(1:2,each=3)
③gl() generate levels产生重复factor e.g. gl(3,2) # [1] 1 1 2 2 3 3 Levels: 1 2 3
gl(2,3,labels=c('f','m')) # [1] f f f m m m Levels: f m
④rnorm()按正态分布产生随机序列,默认标准正态 e.g. rnorm(4,mean=10,sd=3)
⑤rt()按t分布产生序列 e.g. rt(5,df=10)
⑥runif(n,min,max) 按均匀分布产生序列
6.索引 数据位置、TF判断可用于筛选e.g. id = c(1, 2, 3, 4, 5) id[2:5] # 2 3 4 5
id[c(F,T,F,T,F,T)] # [1] 2 4 NA id[id>2] # 3 4 5
7.命名向量(相当于dict)
e.g. pH <- c(area1=4.5,area2=7,mud=7.3,dam=8.2,middle=6.3)
names(c(…))<-c(…)可对向量命名
8.矩阵变换
cbind() 按列合并矩阵 rbind() 按行合并矩阵
矩阵可直接四则运算 e.g. m*3 m1+m2
t(m)转置 solve(m)计算逆 solve(C, b) 计算Cx=b
m1%*%m2矩阵相乘 m1%x%m2计算kronecker积(包含点乘结果) a %o% b 计算外积
特征值、特征向量计算eigen(m)
det(m)计算行列式 diag(m)提取矩阵对角线或产生向量为对角线的矩阵
9.attach() detach() 将数据结构存于内存(可直接调用各种key)
10.apply(x, Margin=1,FUN=…) 对x(array或matrix)按行/列(Margin)应用FUN函数
lapply(x,FUN=…) 对list、向量等应用函数
三、统计计算
1.回归 lm(y~x1+x2+x3,data= …)
2.相关性矩阵with(data, cor(cbind(x1, x2, x3)))
协方差用cov() ※with表示数据环境
3.sample(x,size, replace=TRUE) 可对x抽样,样本规模为size(replace为T时放回抽样)
set.seed(n)在随机过程运行前运行,标记本次随机过程是几号种子,后面若还需要本次随机结果可再set.seed(n)调取
4.range(x)返回x的最小值、最大值
四、可视化
1.windows() 开启单独窗口用于展示 box() 给图形加框
2.plot(x,y,type=””,xlab=”…”,ylab=”…”,main=”…”) 画图,xy为坐标点,type选图类型,xlab填标签,main填标题,pch选点形状,axes=F删除坐标系 也可以plot(x~y)
※每次plot刷新展示框,但其他函数可叠加
3.lines(x,y) 用于画线 abline(a,b) 画直线,可用于画坐标轴
e.g. abline(h=seq(0, 1, by=0.1), v=seq(0, 1, by=0.1), col="gray")
4.curve(f,a,b) 画曲线 e.g. curve(x*cos(25/x), 0.01, pi)
ab为定义域,n设置曲线上点数,ann=F删除坐标标签
5.boxplot()箱线图 barplot()条状图 hist()直方图 image()热力图
6.pie(x,labels=c(…),col)画饼图 ※命名向量可直接用pie() e.g. pie(proportion)
palette() rainbow(n) grey(x) head(colors(), n)可获取一系列颜色
7.par(mfrow=c(x,y)) 将绘图区分为x行y列个区,按行依次绘制
layout(matrix)将绘图区分区,并按matrix中数字组合
8.text(x,y,c(“…”))在相应坐标显示文字
9.arrow(x0,y0,x1,y1,code= )显示箭头,code选箭头类型
segments(x0,y0,x1,y1)画线段
10.polygon(x,y)多边形绘制,xy为向量标识顶点坐标
e.g. polygon(c(0.2, 0.2, 0.8), c(0.2, 0.8, 0.8))
11.legend(x,y,legend=c(…),lty,pch,col)图例(标签,线型,点形状,颜色)
12.locator(n) 要求点击n次并记录位置(可替换函数参数x,y) locator()无限次记录位置
13.pairs(~x1+x2+x3,data= )画散点图矩阵
五、R编程
1. 函数
e.g. se <- function(x) {
sumDiffSqr <- sum((x-mean(x))^2)
n <- length(x)
return(sqrt(sumDiffSqr/(n-1)))
}
FOO1 <- function(x) {
if((x - round(x)) != 0){
cat("x has been coerced into an integer\n")
x <- as.integer(x)
}
if(x>9 | x<1){
stop("x must be an integer between 1 and 9")
} else{
for(i in 1:9) {
res <- x*i
cat(x,'*',i,'=',res,'\n')
}
}
}
2.switch
e.g. convert2meters <- function(x,
units=c("inches", "feet", "yards", "miles")) {
units <- match.arg(units)
switch(units,
inches = x * 0.0254,
feet = x * 0.3048,
yards = x * 0.9144,
miles = x * 1609.344)
}
3. iteration
①for(i in 1:n){……}
②while (i<=n){……}
③repeat {…… break}
4.ifelse{ x[i]==value, 1, 0} 快速判断
4万+

被折叠的 条评论
为什么被折叠?



