R in action整理
1.数值处理函数
1)数学函数
abs(x),sqrt(x),ceiling(x),floor(x),trunc(x)取整,
round(x,digits=n)舍入为n位的小数,signif(x,digits=n)舍入有效位数为n的数
2)统计函数
mean(y),median(y),sd(y),var(y),,sum(y),min(y),max(y),range(y)求值域
quantile(y,probs)求分位数,scale(x,center=TURE,scale=TRUE)中心化或标准化,
diff(x,lag=n)n阶之后差分
3)概率函数
d=密度函数,p=分布函数,q=分位数函数,r=生成随机数
dpqrdistributi_abbreviation()
分布名称 |
缩写 |
二项分布 |
binom |
卡方分布(非中心) |
chisq |
柯西分布 |
cauchy |
指数分布 |
exp |
F分布 |
f |
t分布 |
t |
均匀分布 |
unif |
几何分布 |
geom |
4)字符处理函数及其他
subsrt(x,start,stop):提取或替换字符串向量中的子串4)字符处理函数及其他
strsplit(x,split):在split处分割x中的元素
grep(pattern,x):在x中搜索pattern
pretty(x,n):创建美观的分割点,将连续变量x分割为n个区间
5)函数用于矩阵和数据框
应用到特定维度上:apply(x,MARGIN,FUN,...),其中MARGIN为维度下标,1行2列
2.示例
1)将成绩转变为可比较的单元
2)确定学生在整体中的排名百分比并制定等级
3)将姓和名拆开
student<-c("J D","A W","B M","D J","J M","C C","R Y","G K","J E","M R")
math<-c(502,600,412,358,495,512,410,625,573,522)
science<-c(95,99,80,82,75,85,80,95,89,86)
english<-c(25,22,18,15,20,28,15,30,27,18)
roster<-data.frame(student,math,science,english,stringsAsFactors=FALSE)
options(digits=2) #设定保留两位小数
temp<-scale(roster[,2:4]) #scale()函数,对rooster表的2-4列对应的成绩标准化
score<-apply(temp,1,mean) #apply()函数,对temp的行做均值计算,1行2列
roster1<-cbind(roster,score) #拼接新数据框:rooster+socre
temp<-quantile(roster1$score,c(0.8,0.6,0.4,0.2)) #quantile()函数计算分位数
roster1$grade[roster1$score>=temp[1]]<-"A"
roster1$grade[roster1$score<=temp[1] & score>=temp[2]]<-"B"
roster1$grade[roster1$score<=temp[2] & score>=temp[3]]<-"C"
roster1$grade[roster1$score<=temp[3] & score>=temp[4]]<-"D"
roster1$grade[roster1$score<temp[4]]<-"F" #根据计算出的分位数对成绩进行划分
name<-strsplit((roster1$student)," ") #strsplit()函数拆分student
firstname<-sapply(name,"[",1) #sapply()函数提取成分,"["是一个可以提取某个对象的一部分的函数
lastname<-sapply(name,"[",2) #接上,"["的使用前提为对象已被拆分
roster2<-cbind(firstname,lastname,roster1[,-1]) #[,-1]除第一个变量其余都要
roster<-roster2[order(lastname,firstname),] #将roster按照要求进行排列
3.控制流
statement:语句,cond:条件,expr:表达式,seq:序列
①重复和循环
for(var in seq) statement
while (cond) statement
②条件执行
if (cond) statement else
ifelse(cond, statement1, statement2)
switch(expr,...)
4.整合和重构
①转置 t()
②整合数据 reshape2包