(cases form Introductory statistics whith R by Peter Dalgaard)
###R镜像官方网站(
http://ftp.ctex.org/mirrors/CRAN/)
1、对矩阵的操作,可以利用matrix函数,并且,用rownames()函数给矩阵赋予名字
x <- matrix(1:12,nrow=3,byrow=T)
rownames(x) <- LETTERS[1:3]
x
[,1] [,2] [,3] [,4]
A 1 2 3 4
B 5 6 7 8
C 9 10 11 12
2、对于矩阵的合并,按行合并或者按列合并cbind()rbind()
cbind(A=1:4,B=5:8,C=9:12)
A B C
[1,] 1 5 9
[2,] 2 6 10
[3,] 3 7 11
[4,] 4 8 12
> rbind(A=1:4,B=5:8,C=9:12)
[,1] [,2] [,3] [,4]
A 1 2 3 4
B 5 6 7 8
C 9 10 11 12
3、因子的定义
text.pain <- c("none","severe", "medium", "medium", "mild")
factor(text.pain)
4、利用data.frame()来讲两个向量合并成一个矩阵
vetor1 <- rnorm(20)
vetor2 <- rnorm(20)
d <- data.frame(vetor1,vetor2)
5、条件选择,可以利用条件,对别的向量进行操作
vetor1 <- rnorm(20)
vetor2 <- rnorm(20)
a<- vetor1[vetor2>0]##选出向量1中,当向量vetor2中数大于0所对于的数值。
[]号内为选择的条件
intake.post[intake.pre > 7000 & intake.pre <= 8000]
6、对于缺损值NA,利用is.na(x)来寻找
7、d[d$intake.pre>7000,],对于数据库d,在[]中给出d的条件,非常有用
intake.pre intake.post
8 7515 5975
9 7515 6790
10 8230 6900
11 8770 7335
第33页
1\对数据框中子集的操作###数据框thuesen,包含个向量内容,其中选择,blood.glucose<7的,条件部分
和上面的方括号条件设定有点类似。
vetor1 <- rnorm(20)
vetor2 <- rnorm(20)
d <- data.frame(vetor1,vetor2)
thue2 <- subset(d,vetor1<0)
> thue2
2、##对子集中的数值进行转换,结果将会在转换后的矩阵中增加一列转换的那列结果
> thue3 <- transform(d,log.gluc=log(vetor1))
> thue3
3、##对一个矩阵进行拆分,函数split()##其中order()函数,是对sort()函数中的原来数据的位置进行罗列
<- split(d$vetor1, d$vetor2)
4排序函数sort()
data1<- rnorm(20)
sort(data1)
order(data1)
######对于一个矩阵,要利用其中的一个向量来进行排序怎需要用到order()函数
其中order(sex,age)代表先以性别进行排序,再用年龄进行排序,order获取的是顺序值
5、###apply系列函数的应用
apply(a4[,2:6], 1, mean)##代表对于矩阵a4,从2列到第6列开始,取平均值mean,其中参数“1”为按
##行计算,如果括号中参数为2,则按列计算,mean可以变为sd,sum、中值median等计算。
case:
m <- matrix(rnorm(12),4)
apply(m, 2, min)
result: [1] -1.1616653 -0.7892404 0.3189893
lapply(thuesen, mean, na.rm=T)和sapply(thuesen, mean, na.rm=T)是等效的,其中对于na.rm=T
代表的是缺损值不进入计算
6高斯分布随机函数Gaussian(normal):形式为rnorm(n,mean=0,sd=1);
随机数runif(n, min=0, max=1)
7排序range(x)其功能等同于才c(min(x),max(x))
8关于协方差的计算var(x,y),如果是矩阵或者数据框,则用cov(x,y)来表示。
####二、关于制图
1、基本的制图函数形式
x <- runif(50,0,2)##产生两个含50个元素,从0-2的的随机向量x,y。
y <- runif(50,0,2)
plot(x, y, main="Main title", sub="subtitle",xlab="x-label", ylab="y-label")
###其中main为主标题,sub为副标题,xlab为x轴的名字,ylab=为y轴的名字。其他参数还有很多,比如
###add=FALSE为不叠加到前一个图形上,如果为TURE叠加到前面一个图上,如果有的话;axes=TURE则
绘制边框,如果是FALSE则不绘制边框。type="p":点图;“l”线图;“b”点连线图。xlim=c(1,10),xlim=rang(x)
用来指定xy轴的上下限
2、部分比较有用的绘图低级命令
points(x,y)添加点
lines(x,y)添加线
text(x,y,labels,)在(x,y)处添加用labels指定的文字,典型用法是plot(x,y,type="n");text(x,y,name)
abline(h=y)在纵坐标y处化直线
abline(v=x)在横坐标x处画直线,很有用的函数
abline(lm.obj)画由lm.obj确定的回归线;如lm.obj<-lm(x~y),执行abline(lm.obj)既添加上了回归线
3、关于坐标轴axis的设定
axis(2,at=seq(0.2,1.8,0.2))##其中,2代表y轴,如果是1则代表x轴,坐标轴的形式中的分界点
at为从0.2开始到1.8结束,中间间隔为0.2
box()设置外边框
4、联合不同的图形
x <- rnorm(100)
hist(x,freq=F)
curve(dnorm(x),add=T)
h <- hist(x, plot=F)
ylim <- range(0, h$density, dnorm(0))
hist(x, freq=F, ylim=ylim)
curve(dnorm(x), add=T)
5、编写函数的相关函数
x <- y/2
repeat{
x <- (x + y/x)/2
if (abs(x*x-y) < 1e-10) break
}
x
###if给出条件语句,如果符合那么执行下面的步骤,case中即break中断
x <- seq(0, 1,.05)
plot(x, x, ylab="y", type="l")
for ( j in 2:8 ) lines(x, x^j)
##for语句的应用及相关的格式
6、ls()给出所有的工作空间内的对象;rm(height, weight, bmi)移除相关的对象;rm(ls())移除所有对象
7、保存工作空间及所有的计算过程save.image("ZDVI_y2_3.rdata")注意保存文件名的后缀名.rdata
8、移除文件包detach("package:survival")
基本的学习结束。
三、概率和分布(probablity and distributions)
1随机采样
sample(1:40,5)###在1到40的数中随机采集5个数
sample(c("H","T"), 10, replace=T)##当采样个数大于向量的元素个数时,利用replace可以重复
[1] "T" "T" "T" "T" "T" "H" "H" "T" "H" "T"
sample(c("succ", "fail"), 10, replace=T, prob=c(0.9, 0.1))##不均一的概率采样,其中prob中
设置0.9代表采集到succ的概率为90%
[1] "succ" "succ" "succ" "succ" "succ" "succ" "succ" "succ" "succ" "succ"
2、1/choose(40,5)###函数40个数中选择5个的概率
3、画随机曲线,dnorm(x),表示x的密度,
x <- seq(-4,4,0.1)
plot(x,dnorm(x),type="l")
等效函数为curve(dnorm(x), from=-4, to=4);
4、1-pnorm(160,mean=132,sd=13)###对于平均值为132,标准差为13的一组数列,其中一个数值为160或者比这更大的概率为
[1] 0.01562612
5、pbinom(16,size=20,prob=.5)
[1] 0.9987116
6、###关于正态分布95%自信区间的获取
xbar <- 83###一组数的平均值
sigma <- 12###标准差sd
n <- 5 ###数据的长度length
sem <- sigma/sqrt(n)###平均的标准误差
sem
[1] 5.366563
xbar + sem * qnorm(0.025)
[1] 72.48173
xbar + sem * qnorm(0.975)
[1] 93.51827 ###获得95%置信区间的上下数值
In professional statistics they are used to create simulated data sets in order to study the accuracy of mathematical approximations and
the effect of assumptions being violated.
rbinom(10,size=20,prob=.5)###10为重演十次,20为可能性,prob=0.5为概率值
[1] 12 11 10 8 11 8 11 8 8 13
###测试抛硬币的函数哪个要好点的算法,两个好像差不多
a<-rbinom(10000,size=1,prob=.5)####注意两种选择,size等于1
b<-sample(c(0,1), 10000, replace=T, prob=c(0.5,0.5))
sum(a)
sum(b)
###关于正态分布的自编函数normal.fun()
normal.fun<- function(vetor1,a)##a的数值为0.05或者是0.001自己设定
{
xbar <- mean(vetor1)###一组数的平均值
sigma <- sd(vetor1)###标准差sd
n <- length(vetor1) ###数据的长度length
sem <- sigma/sqrt(n)###平均的标准误差
border1 <- xbar + sem * qnorm(a/2)
border2 <- xbar + sem * qnorm(1-a/2)
vetor2 <- c(border1,border2)
return(vetor2)
}
b<-rnorm(20)
normal.fun(b,0.05)
https://blog.sciencenet.cn/blog-474707-424967.html
上一篇:
R语言学习笔记(一)下一篇:
R语言学习笔记(三)