实验2 创建数据集(一)
实验目的:掌握R语言的多种数据存储结构,掌握向R中导入基本格式的数据的方法,掌握为变量和变量代码添加描述性的标签。
实验内容:
- sd函数会计算标准差。请计算0-100的标准差。(答案为29.3)
> sd(0:100)
[1] 29.30017
- 观看数学符号演示,使用demo(plotmath),掌握基本的R语言运算符的使用方法。
> demo(plotmath)
- 生成向量x,其元素为1,2,7,8,并计算x的平方和。(答案为118)
> x <- c(1,2,7,8)
> sum(x^2)
[1] 118
>
- 你将如何创建一个包含值0,0.25,0.5,0.75,和1的向量?
使用seq()函数
> x <- seq(from=0,to=1,length.out=5)
> x
[1] 0.00 0.25 0.50 0.75 1.00
- 你将如何创建一个包含值0 3 6 9 12 15 18 21 24 27 30 33 36 39 42 45 48的向量?
> x <- seq(from=0,to=48,by=3)
> x
[1] 0 3 6 9 12 15 18 21 24 27 30 33 36 39 42 45 48
- 请显示26个大写字母
#利用保留名称LETTERS
> x <- LETTERS
> x
[1] "A" "B" "C" "D" "E" "F" "G" "H" "I" "J" "K" "L" "M" "N" "O" "P" "Q" "R" "S" "T" "U" "V" "W" "X" "Y" "Z"
- 请显示大写字母表中的第8个到第16个字母
> x <- LETTERS[8:16]
> x
[1] "H" "I" "J" "K" "L" "M" "N" "O" "P"
- 请显示大写字母表中的第8个字母,第10个字母和第16个字母
> x <-LETTERS[c(8,10,16)]
> x
[1] "H" "J" "P"
- 请显示大写字母表中的第1-6个字母以及第8个字母,第10个字母,第16个字母
> x <-LETTERS[c(1:6,8,10,16)]
> x
[1] "A" "B" "C" "D" "E" "F" "H" "J" "P"
- 请显示一年12个月的英文全称
> x <- month.name
> x
[1] "January" "February" "March" "April" "May" "June" "July" "August"
[9] "September" "October" "November" "December"
- 你将如何创建向量(提示:paste函数进行字符串的拼接)
> paste("BigData",c(1:10),"A",sep = "") #sep设置拼接元素之间以什么作为间隔,默认为一个空格
> paste0('BigData',c(1:10),'A')
- 你将如何创建向量(提示:paste函数进行字符串的拼接)
> paste("BigData",c(1:10),LETTERS[1:10],sep = "")
- 综合实例
请创建如下数据框
name sex date
1 刘涛 Female 2000-01-02
2 张硕 Male 2001-12-12
3 海岩 Male 2003-10-12
> name <- c("刘涛","张硕","海岩")
> sex <- c("Female","Male","Male")
> date <- c("2000-01-02","2001-12-12","2003-10-12")
> df <-data.frame(name,sex,date)
> df
将“海岩”的值修改为“海燕”
> df[3,1] <- "海燕"
> df
将第3行第2列的值修改为“Female”
> df[3,2] <- "Female"
> df
- beaver1和beaver2数据集包含两个海狸的体温数据。为beaver1数据集添加一列名为id的列,其值全部为1。同时,也为beaver2添加一个id值,值全部为2。垂直拼接两个数据框,并且找到所有活跃着的海狸的子集。
> b1 <-beaver1
> #添加id列
> b1$id <-c(1)
> b2 <-beaver2
> #添加id列
> b2$id <-c(2)
> #垂直拼接两个数据框
> b <-rbind(b1,b2)
> #找到所有活着的海狸的子集
> b[b$activ>0,]
- 产生10-20之间的服从均匀分布的随机整数,并形成按行优先的4行5列的矩阵。如果矩阵元素为奇数,则对其除以2,否则乘以2.
第一种可以使用循环。
x <- matrix(round(runif(20,10,20)),4,5,byrow = TRUE)
print(x)
#奇数下标
x1 <-which(x%%2==0)
#偶数下标
x2 <-which(x%%2!=0)
#偶数*2
for (i in x1){
x[i]=x[i]*2
}
#奇数/2
for (i in x2){
x[i]=x[i]/2
}
print(x)
也可以使用下面这种方法。
- 图形处理
1.) 生成10个服从均匀分布(或者正态分布)的随机整数,范围60-100,表示学生成绩
2.) 使用paste函数生成Stu1,Stu2,Stu3…作为图形标签
3.) 使用barplot()绘制条形图,配色方案可选择heat.colors, rainbow,topo.colors等
> scores <- round(runif(10,60,100))
> score
[1] 94 82 74 91 82 67 100 90 64 71
> tip <- paste("Stu",c(1:10),sep ="")
> tip
[1] "Stu1" "Stu2" "Stu3" "Stu4" "Stu5" "Stu6" "Stu7" "Stu8" "Stu9" "Stu10"
> barplot(scores,names.arg = tip,main="heat.colors·The scores",col=heat.colors(10))
- 图形处理
使用R语言基础包中的graphics包中的boxplot函数绘制箱线图。
1.)读取数据集data4_1.csv,要求采用相对路径
> csv <- read.csv("data4_1.csv")
2.)使用data4_1数据集中的4-9列绘制箱线图,boxplot函数
> boxplot(csv[,4:9],col=heat.colors(6))
3.)使用points()和apply()绘制均值点,col=”black”,cex=1,pch=3
> means <- apply(csv[4:9],2,mean)
> points(means,col="black",cex=1,pch=3)