#实验一
#1)查看变量名称,更改变量名
#1.使用rename
install.packages("reshape")
library(reshape)
rename(CO2,c(Treatment="Treat"))
#2.使用names
names(CO2)[3]="Treat"
#2)检查是否存在缺失值,若有,检查位置并删除所在行
anyNA(CO2)
is.na(CO2)
na.omit(CO2)
#3)对变量update排序,并对数据集按照update排序
#从大到小
sort(CO2$uptake,decreasing=TRUE)
#从小到大
sort(CO2$uptake)
#数据集从大到小
CO2[order(CO2$uptake,decreasing=TRUE),]
#数据集从小到大
CO2[order(CO2$uptake),]
#4)将CO2随机分成两组,比例为6:4
n<-sample(2,length(CO2$uptake),replace=TRUE,prob=c(0.6,0.4))
p1<-CO2[n==1,]
p1
p2<-CO2[n==2,]
p2
#5)应用tapply(),计算不同plant对应的uptake的平均值
tapply(CO2$uptake,CO2$Plant,mean)
#6)应用aggregate(),计算不同plant、type对应的uptake的平均值
aggregate(CO2[,5],by=list(CO2$Type,CO2$Plant),FUN=mean)
#7)应用lapply(),同时计算con和uptake的均值
lapply(CO2[,c(4,5)], mean)
#8)使用grep(),找出plant中含有“Qn”的行的位置,并将这些行储存于Plant_Qn中
Plant_Qn<-CO2[grep("Qn",CO2$Plant),]
#9)使用gsub(),将CO2中plant中的“Qn”改为“QN”
gsub("Qn","QN",CO2$Plant)
#实验二
#1)编写stat,要求可以同时计算均值、最大值、最小值、标准差、峰度和偏度
install.packages("fBasics")
library(fBasics)
stat<-function(x)
{
#异常值处理,当输入的数据不是数值型数据时报错
if(!is.numeric(x)){
stop("the input data must be numberic!\n")
}
#异常处理,当今输入一个数据时,告知不可计算标准差
if(length(x)==1){
stop("can not compute sd for one number,
a numerric vector required.\n")
}
meanx<-mean(x)
Max_x<-max(x)
Min_x<-min(x)
x2<-c()
for(i in 1:length(x)){
xn<-x[i]-mean(x)
x2[i]<-xn^2
}
sum2<-sum(x2)
sd<-sqrt(sum2/(length(x)-1))
sk<-skewness(x)
ku<-kurtosis(x)
answer<-c(meanx,Max_x,Min_x,sd,sk,ku)
return(answer)
}
#2)生成自由度为2的t分布的100个随机数t,并通过stat计算
t<-rt(100,2)
stat(t)