语言数据、图形函数运用方法

 1.seq()等间隔函数  

seq(from,to,by,length.out,along.with)

from,to 为数值,表示开始和结束

by为数值,表示间隔

length.out为数值,表示数列长度

along.with为向量,表示数列长度与该向量长度相等

seq(from=0,to=1,by=0.1)
seq(from=0,to=1,length.out = 11)  #表示数列长度
seq(10)
seq(0,1,along.with = c(1,2,3,4,5))  #产生数列长度与c向量长度相等的向量

2.rep()重复函数

rep(x,times,length.out,each,正整数向量)

x为数量、向量、数据对象

times ,x重复的次数

length.out,重复后该向量的长度

each,x中每个分量重复的次数

正整数向量,x中分量对象重复的次数

rep(1,times=2)
rep(c(1,2,3),times=3)
rep(c(1,2),length.out=5)
rep(c(1,2,3,4),each=2)
rep(1:4,c(1,2,3,4))
rep(1:4,c(1,2,3,4,5))  #error

3.paste()  “粘贴”多个对象

 paste(……,sep=“ ”,collapse=NULL)

……为一个或多个对象,sep为分隔符

paste("Happy","birthday")
 paste("Happy","birthday",sep=",")
 paste("信管2016",1:4,sep="-")
 paste(c("x","y"),rep(c(1,2),each=2))

x<-c(1,2,3,4,5)
y<-c("a","b","c","d","e")
paste(x,y)
paste(x,y,sep="-")
paste(x,y,sep="-",collapse=",")

4.factor()  将一个向量转换成因子

factor(x,levels,labels=levels,exclude=NA,ordered=is.ordered(x))

data<-c(1,2,3,3,1,2,2,3,1,3,2,1)  #数值向量
fdata1<-factor(data);fdata1
fdata2<-factor(data,levels=c(1,2,3),labels=c("优","良","差"),order=TRUE);fdata2
fdata3<-factor(data,levels=c(1,2,3),labels=c("差","良","优"),order=TRUE);fdata3


fdata<-factor(data,levels=c("优","良","差"))
fdata<-factor(data,levels=c(1,2,3))
#注意区别,levles:因子水平,labels:各水平的名字

5.tapply()   不同水平下指定函数的计算

tapply(x,index,fun,simplify=TRUE)

x:计算对象,向量

index:与x长度相同,表示x的因子水平

fun:需要计算的函数

simplify:返回值类型,T表示数组,F为列表

value <- c(87,58,93,88,63,76,89)
gender <- c("男","男","女","男","女","女","男")
# 按gende计算mean
tapply(value, gender, mean)


# 练习:统计男女平均成绩

score<-c(87,58,93,88,63,76,89) #成绩
gender <- c("男","男","女","男","女","女","男")
tapply(score,gender,mean)


class <- c("一班","一班","一班","一班","一班","一班","一班",
           "二班","二班","二班","二班","二班","二班","二班")
score<-c(87,58,93,88,63,76,89,77,65,90,67,45,89,98) #成绩
gender <- c("男","男","女","男","女","女","男","男","男","女","男","女","女","男")
tapply(score,list(gender,class),mean)

 

6.table()  统计因子向量中各水平出现的频数

table(fdata)

grade<-c("优","良","差","差","优","良","良","差","优","差","良") #字符向量
fgrade<-factor(grade)

table(fgrade)

7.matrix 矩阵的生成

matrix(data,nrow, ncol, byrow, dimnames)

data:数据向量

nrow:矩阵的行数

ncol:  矩阵的列数

byrow:逻辑值,T表示行序为主序,F表示列序为主

dimnames:行、列名称,列表格式

####生成矩阵的2种方法
####matrix
mdat<-matrix(c(1,2,3,4,5,6,7,8,9,0),nrow=2,
             byrow=T,dimnames=list(c("row1","row2"),c("C1","C2","C3","C4","C5")))
# 求矩阵维数
dim(mdat) 

#将向量X以列序为主序设置为矩阵
x<-1:12;
dim(x)<-c(3,4)

#将向量X以行序为主序设置为矩阵
mdat<-matrix(c(2,11,5,9,4,2,4,7,10,6,0,6),nrow = 3,byrow = T)
mdat

 

8.apply() 对矩阵或数组按照维度做运算

apply(x,margin,fun)

x:数组或矩阵

margin:做运算的维度,1表示行,2表示列

fun:运算函数

#apply()以数据帧或矩阵作为输入,并以向量、列表或数组的形式给出输出。
A<-matrix(1:20,nrow=4);A
sum(A);sum(A[,2])
apply(A,1,sum) #按行求和
apply(A,2,sum) #按列求和

#apply对数组或矩阵运算
x<-1:20
dim(x)<-c(5,4)
apply(x,1,mean) #参数名省略
apply(x,MARGIN=1,FUN=mean) #参数名为大写英文字母
#lapply对列表或数据框运算,结果为列表
lapply(stu[,7:10],mean)
#sapply对列表或数据框运算,结果为向量、矩阵、数组
sapply(stu[,7:10],mean)
####plyr软件包
install.packages("plyr")
aaply(stu[,7:10],function(x) x*150/100)

9.data.frame函数 数据框的生成

 

df<-data.frame(

Name=c("Alice","Becka","James","Jeffrey"),

Sex=c("F","F","M","M"),

 Age=c(13,13,12,13),

 Height=c(56.5,65.3,57.3,62.5),

 Weight=c(84,98,83,84))

as.data.frame将其他数据结构转换成数据框

lst<-as.data.frame(lst)

10.read.table()  读取表格形式的文件

read.table(file,header=True,sep=“”,row.names,col.names,skip,nrows)

file:读入数据文件名,数据以表格形式(纯文本文件)保存在文件中。

header:数据文件中有表头,则为T。

sep:数据分隔字符

row.names:行名

col.names:列名(变量名)

skip:读数据时跳过的行数,非负整数。

nrows:读取的行数

11.read.csv()  需要将Excel文件转换成CSV(逗号分隔)文件

read.csv(file,header)

 

12.library()

library(“pknames”)加载程序包

 

13.data    

data()              查看数据集

data(dataname)      加载数据集

 

14.write()  保存文件

write(x,file,ncolumns,append)

x:需要写入文件的数据,通常为矩阵或向量

file:要保存的文件名

ncolumns:列数,字符默认1,数值默认5

append:逻辑变量,为T表示在原有文件添加数据,F表示新文件

 

write.csv()

将数据写为CSV格式文

15.rbind()和cbind() 列数或行数相同   合并矩阵或数据框

stu1<-read.csv("stu1.csv",header=T)

stu2<-read.csv("stu2.csv",header=T)

stu<-rbind(stu1,stu2)

 

16.cut()  输入为数值向量,输出为因子

cut(x,breaks,labels)

X:数值向量

breaks:指定分割点数量的整数,或指定位置向量

labels:输出因子的水平的标签

 #cut()函数,将一个连续性变量切割成很多小片段
data<-round(runif(30,0,100))
data_cut<-cut(data,breaks=c(0,60,70,80,90,100))
table(data_cut)

 

17.subset()函数

subset(x,subset,select)

x:全部数据

subset:需要取出的子集

select:需要取出的列

stu[stu$性别=="女",]  #取出所有女生的信息
subset(stu,性别=="女")  #取出女生信息
subset(stu,性别=="女",高数)  #取出女生高数成绩

18.sample()函数  随机抽样

sample(x,size,replace,prob)

x:目标数据

size:抽样数量的参数

replace:是否放回抽样,有放回为T,无放回F

prob:抽样的概率向量

sample直接作用数据框,得到对的抽样结果。

实现按行抽样

 #简单随机抽样
#base包中的sample(),使用前不需要加载包,默认加载
data_stu<-rbind(stu1,stu2)
sample(data_stu,size=2,replace=F) #直接作用数据框,得到列的抽样结果
sub1<-sample(nrow(data_stu),5,replace = F)  #对行数抽样
getdata(data_stu,sub1)

 

19.strata()  按照某个分层因子,按照比例抽样

strata(data,stratanames,size,method,pik,description)

data:待抽样数据集

stratanames:分层所依据的变量名

size:各层要抽出的观测样本数,顺序与变量水平出现次序相同

method:srswor(无放回)\srswr(有放回)\pisson(泊松)\systematic(系统)

pik:各样本抽样概率

description:是否输出含有各层基本信息的结果

20.plot(x,y,type,……)

 

plot(x,y,type,lty,pch,……)

 

plot(x,y,type,lty,pch,cex,lwd……)

cex:指定符号大小,默认大小为1,设置值为默认值的倍数

lwd:设置线条宽度

lty:设置线条的格式

pch:设置点的格式

x,y:构成横坐标和纵坐标的对象

type:图形类型,具体取值如表所示

type

绘点(默认值)

l

画线(line)

b

同时绘点和线,线不穿过点

c

仅画参数“b”所示的线

o

同时绘点和线,线穿过点

h

绘出点到横轴的竖线

s

绘出阶梯图(先横再纵)

S

绘出阶梯图(先纵再横)

n

空图,不绘任何图形

 a<-c(16,20,27,40,60)

dose<-c(20,30,40,45,60)

plot(a,dose,type="b",lty=2,pch=15)

 

xlim,ylim:二维向量,x轴、y轴的范围

main:字符串,图形的标题

sub:字符串,图形的副标题

xlab:字符串,x轴的标签

ylab:字符串,y 轴的标签

plot(a,dose,type="b",lty=2,xlim=c(10,70),ylim=c(10,70),main="药物响应图",sub="2018年",xlab="药物A",ylab="剂量")

 

21.hist(x,breaks,freq,border,labels) 直方图

x:向量,直方图的数据

breaks:数值,向量或字符串,描述直方图的断点

freq:逻辑变量,T为频数,F为密度,默认为T

border:数字或字符串,外框的颜色

labels:逻辑变量,T表示标出频数或密度

height<-round(runif(100,150,165),2)
windows()
hist(height,col="blue",border="red",labels = T,breaks=11,ylim = c(0,100))  #频数图
# 当freq缺省时,当且仅当breaks是等距的,freq取True。
# 当freq=True时,纵轴是频数,当freq=False时,纵轴是密度
hist(height,col="blue",border="red",labels = T,breaks=c(150,155,160,165),
     ylim = c(0,100),freq = T)  #频数图
# angle:counter-clockwise
# density:shading lines
hist(height,col="blue",border="red",angle=15+30*1:9,main="身高直方图",
     freq=F,density=20,breaks=9)  #密度图

 

 

22.boxplot(x,formula,data,range,outline,col,horizontal)

x:向量、列表,数据框

formula:公式,形如y~grp,其中y为向量,grp为分组,常为因子

data:数据框,提供数据

range:数值,表示“触须”范围,默认值为1.5(最小值小于触须则标记为outlier)

outline:逻辑值,F表示不标明异常值点

horizontal:逻辑值,F表示绘制水平箱线图

x<-c(25,45,50,54,55,61,64,68,72,75,75,78,79,81,83,84,84,84,85,86,86,86,87,89,89,89,90,91,91,92,100)

# 分位数
# 中位数和平均值的区别
quantile(x); 
fivenum(x); 
summary(x);
boxplot(x,range=1)  
y <- c(6, 47, 49, 15, 42, 41, 7, 39, 43, 40, 36)
write.csv(y,"abc.csv")

23.text(x,y,labels,pos,cex,col,font,……).添加文字或符号

x,y:数值向量,表示添加文字的坐标;

labels:数值或字符型向量,需要添加的文字或符号

adj:[0,1]区间的值,调整文字的位置

pos:数字,1,2,3,4分别表示原始位置的下、左、上、右位置,不能和adj参数同时使用;

font:不同字体,(1,2,3,4,5)

cex : 设置文字的大小

例:给最大值添加标注

# font: 设置文字的格式,1是默认值,就是普通的文字,2代表加粗,
# 3代表斜体,4代表加粗+斜体,5只有用来ADOBE的设备上时才有用
text(weight[max],height[max],labels = "weight",font = 4,pos=4)
text(weight[max],height[max],labels = "weight",font = 4,adj=0)
text(weight[max],height[max],labels = "weight",font = 4,adj=1)

24.expression()   数学符号或表达式

数学表达式使用expression表示,该函数可以出现在text()、mtext()、axis()、title()中,表达图像中的意义

x<-seq(from=-2*pi,to=2*pi,length=200)
y<-x/2-2*sin(x)
windows()
plot(x,y,lty=1,type="l",col="red",lwd=2)
text(locator(1),expression(y==x/2-2*sinx))


plot(iris[iris$Species=="setosa",]$Petal.Length, iris[iris$Species=="setosa",]
     $Petal.Width,type="p",pch=24,xlim = c(0,7),ylim=c(0,2.5),xlab="Petal Length",
     ylab="Petal Width",col="red")
points(iris[iris$Species=="versicolor",3],iris[iris$Species=="versicolor",4],type = "p",pch=22,col="blue")
points(iris[iris$Species=="virginica",3],iris[iris$Species=="versicolor",4],type = "p",pch=25,col="green")
text(c(3,2.8,6),c(0.25,1.5,1.9),labels=names(table(iris$Species)),font=2,col=c(2,4,3))

 

25.abline(a,b,h,v,reg,coef,untf)    添加直线

a,b:数值,a表示截距,b表示斜率

h:数值或向量,表示水平直线

v:数值或向量,表示竖直直线

coef:二维向量,分别表示截距和斜率

a<-c(16,20,27,40,60)
b<-c(15,18,25,31,40)
dose<-c(20,30,40,45,60)
plot(a,dose,type="b",xaxt="n",ylab="用药剂量",xlab="用药种类")
lines(b,dose,type="b",lty=2)
legend(40,30,legend = c("A药物","B药物"),lty=c(1,2))  #线条类型应和原线一致 
title(main="药物响应图",sub="两种药物",outer=F)

plot(a,dose,type="b",xaxt="n")
lines(b,dose,type="b",lty=2)
legend(40,30,legend = c("A药物","B药物"),lty=c(1,2))  #线条类型应和原线一致 
title(main="药物响应图",sub="两种药物",outer=F,line=0.8)#数值主标题位置
axis(side=1,at=c(20,30,40,50,60),
     labels = c("月份","月份","月份","月份","月份"))

#添加直线
abline(h = 20, col = "red")
abline(v = 30, col = "blue")
abline(a = 30 ,b = 1, col  = "blue")
abline(coef = c(20, 1), col = "green")

c(x0,y0) <- locator(1)

 

26.legend(x,y,legend,border,lty,lwd,pch,……)添加图例

x,y:数值,表示图例的位置坐标;

legend:字符串或表达式,表示图例的内容

lty,lwd:数字,图例中线的类型与宽度

pch:数字,图例中符号的类型

plot(a,dose,type="b",lty=1,pch=1)
lines(b,dose,type="b",lty=2,pch=2)
legend(30,30,legend = c("A药物","B药物"),lty=c(1,2),
       horiz=F,border=T, bty = "n",text.font = 1,
       pch=c(1,2),seg.len=5)  #线条类型应和原线一致

27.添加边

axis(side,at,labels,tick,line,pos,……)

side:数字,描述添加哪些位置的边。1,2,3,4分别表示下,左,上,右;

at:向量,添加标记的位置;

labels:逻辑,T表示在标记位置添加at的值,F表示不添加

##Cars数据集,
plot(cars,axes=F)
# plot(cars,axes=T)
title(main = "Stopping Distance ersus Speed",outer = F)
axis(side=1,labels = T)#绘制x坐标轴
axis(side=1,at =c(6,19) ,labels = T)
axis(side=2,at =c(6,19) ,labels = F)##绘制y坐标轴

box(which = "plot",lty=2,lwd=2,col=2) #绘制边框
box(which = "figure",lty=2,lwd=2,col=2)
box(which = "inner",lty=2,lwd=2,col=2)
box(which = "outer",lty=2,lwd=2,col=2)

 

28.图形参数设置方法par()

(1)在绘图函数中设置参数

如:plot(dose,a,type=“b”,col=“red)

(2)通过par()函数设置:参数值将一直有效置。

par()不带参数将生成含有当前图形参数设置的列表;

par(no.readonly=T)生成可以修改参数列表。

 

如:

opar<-par(no.readonly=T)

par(lty=2,pch=17,col=“red”)

plot(dose,a,type=“b)

lines(dose,b,type=“b)

par(opar)

 

例:

x<-round(runif(100,30,50),1) ###随机产生100名学生的体重

par1<-par(no.readonly = T)    ###设置参数

par(lty=4,pch=15,col="red")

plot(x)    ###画散点图

qqnorm(x)      ###QQ图

par(par1)   ###回归初识参数

plot(x)    ###绘制散点图作比较

 

 

par()函数和layout()函数实现多幅图形的组合

在par()函数中使用mfrow=c(nrows,ncols)创建图形矩阵

如:创建两行两列的四幅图

attach(mtcars)

opar<-par(no.readonly = T)

par(mfrow=c(2,2))  #设置2行2列的组合图

plot(wt,mpg,main="Scatterplot of wt vs.mpg")  #车重与英里数的散点图

plot(wt,disp,main="Scatterplot of wt vs.disp") #车重与排量的散点图

hist(wt,main = "Histogram of wt")             #车重的直方图

boxplot(wt,main="Boxplot of wt")             #车重的箱线图

par(opar)

29.layout(mat)

mat为矩阵,指定要组合的多个图形的位置。

 

#layout
data(mtcars)
par(pin=c(3,2))
attach(mtcars)
layout(matrix(c(1,2,3,3),2,2,byrow=TRUE),widths=c(2,2),height=c(1,1))
layout.show(3)
##上述layout表示,首先按照2行2列来排布,1图和2图放在第一行,3图整个放在第二行。
##widths表示宽度按照3:1的比例来排列,height表示高度按照1:2的遍历来排列
hist(wt)
hist(mpg)
hist(disp)
#如果图形显示不全,则修改mar参数

#layout.show(n):n为要显示的子图个数
m<-matrix(1:4,2,2);m #建立矩阵m,2列2行
layout(m,widths=c(1,3),heights=c(3,1)) #将当时装置按照m进行划分,宽度之比为1:3,高度之比为3:1
layout.show(4)

 

 30.which()

判断分量中谁为T

 

31.names()命名函数

 

fruit<-c(5,10,8,11)

names(fruit)<-c("orange","banana","apple","peach")

 

rownames()  求矩阵行名,或为其命名

colnames()    求矩阵列名,或为其命名

mdat<-matrix(c(1,2,3,4,5,6,7,8,9,0),nrow=2,byrow=T)

rownames(mdat)<-c("row1","row2")

colnames(mdat)<-paste("C",1:5,sep="")

 

dimnames对各维命名

dimnames(x2)<-list(c("row1","row2","row3"),c("col1","col2","col3","col4"),c("z1","z2"))

32.均值      mean(x)

 

33.保留小数  round(x,digit)

digit  小数点后几位

34.有参数的函数       函数名<-function(){

……

返回值计算表达式               }

 

x<-10;y<-20          #x,y全局变量

f<-function(y)  x+y   #y为局部变量

f(10)

35.install.packages()

install.packages()            打开安装包目录

install.packages(“包名”)    安装一个包

install.packages(“RODBC”)

36.str()函数

一般用于检查数据框当中有哪些数据

str(Insurance)   #查看数据集的详细情况

 37.getdata()

getdata(data, m)

install.packages("sampling")
library(sampling)

sample(x,size,replace,prob)

x:目标数据

size:抽样数量的参数

replace:是否放回抽样,有放回为T,无放回F

prob:抽样的概率向量

sample直接作用数据框,得到对列的抽样结果。 实现按行抽样

sub1<-sample(nrow(data_stu),5,replace = F)

getdata(data_stu,sub1)

38.sweep()    归一化,标准化

m<-matrix(c(1:9),byrow=TRUE,nrow=3)
#第一行都加1,第二行都加4,第三行都加7
sweep(m, 1, c(1,4,7), "+")
   

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值