实验三 创建数据集(二)

实验3 第2章 创建数据集(二)

1.创建下图所示数据框stu,并进行相关操作

image-20220905095311077

要求:

a) height属性通过产生均值为155,标准差为10的服从正态分布的随机数获得

> height<-trunc(rnorm(10,155,10))
> height
 [1] 151 156 171 152 149 154 155 150 135 164

image-20220905100734379

b) gender属性的获得随机生成。参考方案如:首先随机产生{0,1}二进制向量,然后依照ifelse函数将{0,1}映射为字符串”female”和“male”。

> x<-round(runif(10,0,1))
> x
 [1] 1 1 1 1 1 1 1 1 0 1
> x<-round(runif(10,0,1))
> x
 [1] 1 0 1 1 1 1 0 1 0 1
> gender<-ifelse(x<=0,"female","male")
> gender
 [1] "male"   "female" "male"   "male"   "male"   "male"   "female" "male"   "female" "male" 

image-20220905101525642

> stu<-data.frame(height,gender)
> stu
   height gender
1     151   male
2     156 female
3     171   male
4     152   male
5     149   male
6     154   male
7     155 female
8     150   male
9     135 female
10    164   male

在这里插入图片描述

c) 将gender属性转换为因子gender_fac

> gender_fac<-factor(stu$gender)
> gender_fac
 [1] male   female male   male   male   male   female male   female male  
Levels: female male

image-20220905102100530

d) 使用split函数按照因子gender_fac对数据框进行分组。

> split(stu,gender_fac)
$female
  height gender
2    156 female
7    155 female
9    135 female

$male
   height gender
1     151   male
3     171   male
4     152   male
5     149   male
6     154   male
8     150   male
10    164   male


image-20220905102315254

e)使用tapply()对stu的height向量依据因子gender_fac计算平均值

> tapply(height,gender_fac,mean)
  female     male 
148.6667 155.8571 

image-20220905102633303

2.读取数据文件bus.csv,进行如下操作

(1) 统计不同站点的上车人数(tapply函数)

实验结果为:

1 2 3 4 5

35 35 20 30 19

> bus<-read.csv("E:/R语言/作业/bus.csv")
> bus
   线路名称 车牌号 到达站点 上车人数
1        81 冀A002        1        1
2        81 冀A001        4        6
3        81 冀A002        2        9
4        81 冀A003        3        4
5        81 冀A001        4        7
6        81 冀A003        1       10
7        81 冀A002        4        6
8        81 冀A003        2        1
9        81 冀A003        3        5
10       81 冀A003        5        0
11       81 冀A001        1        5
12       81 冀A003        3        3
13       81 冀A001        2        6
14       81 冀A003        4        9
15       81 冀A002        3        8
16       81 冀A003        2        3
17       81 冀A003        4        2
18       81 冀A003        1        1
19       81 冀A001        3        0
20       81 冀A003        2        6
21       81 冀A002        5        7
22       81 冀A003        5        0
23       81 冀A003        5        4
24       81 冀A003        2        9
25       81 冀A001        5        2
26       81 冀A003        1        9
27       81 冀A002        5        5
28       81 冀A003        5        1
29       81 冀A003        2        1
30       81 冀A001        1        9

> tapply(bus$上车人数,bus$到达站点,sum)
 1  2  3  4  5 
35 35 20 30 19 

image-20220905103619489

(2) 按照车牌号分类,分别统计不同站点上车人数(split函数,sapply函数,tapply函数)

实验结果为:

冀A001 冀A002 冀A003

1 14 1 20

2 6 9 20

3 0 8 12

4 13 6 11

5 2 12 5

> tapply(bus$上车人数,list(bus$到达站点,bus$车牌号),sum)
  冀A001 冀A002 冀A003
1     14      1     20
2      6      9     20
3      0      8     12
4     13      6     11
5      2     12      5

image-20220905104559403

3.读取student_NA.csv文件到数据框df1,显示读取的数据框df1。删除数据框df1中的NA值所在的列,将结果保存到df2,显示df2。

> df1<-read.csv("E:/R语言/作业/student_NA.csv")
> df1
   姓名 性别 年龄 身高 体重 党员 民族
1  张三   女   15  170 41.7   NA   NA
2  李四   男   14  169 41.4   NA   NA
3  王五   女   14  170 40.2   NA   NA
4  赵六   男   17  164 46.1   NA   NA
5  丁一   女   16  162 46.1   NA   NA
6  丽丽   女   14  158 46.7   NA   NA
7  小芳   男   14  163 45.5   NA   NA
8  大宝   女   17  166 45.5   NA   NA
9  张扬   男   14  168 45.5   NA   NA
10 琳琳   女   14  167 50.7   NA   NA
11 浩浩   男   15  155 45.0   NA   NA
12 洋洋   男   14  157 48.5   NA   NA
> df2<-df1[,-c(6,7)]
> df2
   姓名 性别 年龄 身高 体重
1  张三   女   15  170 41.7
2  李四   男   14  169 41.4
3  王五   女   14  170 40.2
4  赵六   男   17  164 46.1
5  丁一   女   16  162 46.1
6  丽丽   女   14  158 46.7
7  小芳   男   14  163 45.5
8  大宝   女   17  166 45.5
9  张扬   男   14  168 45.5
10 琳琳   女   14  167 50.7
11 浩浩   男   15  155 45.0
12 洋洋   男   14  157 48.5

image-20220905105431828

4.随机生成30个自然数, 然后把3的倍数的储存到一个向量,3k+1形式的数储存到另外一向量, 3k+2形式储存到第三个向量。写出R代码。

> x<-trunc(runif(30,0,100))
> x
 [1] 11 56  1 24 67 82  5 41 38 88  5 79 82 14 50 60 33 52 34 96 42 42  3 83 51 78 46 57 72 77
> x1<-x[x%%3==0]
> x1
 [1] 24 60 33 96 42 42  3 51 78 57 72
> x2<-x[x%%3==1]
> x2
[1]  1 67 82 88 79 82 52 34 46
> x3<-x[x%%3==2]
> x3
 [1] 11 56  5 41 38  5 14 50 83 77

image-20220905105937954

5.随机产生一个包括负数和正数的整数向量,元素的范围为-50,50,向量元素个数为10,负数采用1-负数替代,即-3变成4,正数用1+正数替代,即2变成3,怎么编写代码?(数据重编码)

> x<-trunc(runif(10,-50,50))
> x
 [1] -27  45 -40 -32  49  33 -31  -1  -4 -28
> x<-ifelse(x>0,1+x,1-x)
> x
 [1] 28 46 41 33 50 34 32  2  5 29

image-20220905110328705

6.对R内部数据iris, 求出三类花各个属性的中位数.写出R代码.

> tapply(iris$Sepal.Length,iris$Species,median)
    setosa versicolor  virginica 
       5.0        5.9        6.5 
> tapply(iris$Sepal.Width,iris$Species,median)
    setosa versicolor  virginica 
       3.4        2.8        3.0 
> tapply(iris$Petal.Length,iris$Species,median)
    setosa versicolor  virginica 
      1.50       4.35       5.55 
> tapply(iris$Petal.Width,iris$Species,median)
    setosa versicolor  virginica 
       0.2        1.3        2.0 

image-20220905112625618

7.向量x=c(“我”,“你”,“我”,“我”,“你”,“他”,“们”,“他”,“人”)中,统计向量x中的字出现的次数。 写出R代码。

> x<-c("我","你","我","我","你","他","们","他","人")
> x
[1] "我" "你" "我" "我" "你" "他" "们" "他" "人"
#方法1
> x1<-factor(x)
> summary(x1)
们 你 人 他 我 
 1  2  1  2  3 
#方法2
> x2<-table(x)
> x2
x
们 你 人 他 我 
 1  2  1  2  3 

image-20220905113531194

8.构建一个向量x,向量由5个1,3个2,4个3和2个4构成。(使用rep())

> x<-rep(1:4,times=c(5,3,4,2))
> x
 [1] 1 1 1 1 1 2 2 2 3 3 3 3 4 4

image-20220905113920187

9.构造4×5矩阵A和B,其中A将1,2,…,20按列输入,B按行输入。矩阵C是由A的前3行和前3列构成的矩阵,矩阵D是由矩阵B的各列构成的矩阵,但不含B的第3列。

> A<-matrix(1:20,4,5)
> A
     [,1] [,2] [,3] [,4] [,5]
[1,]    1    5    9   13   17
[2,]    2    6   10   14   18
[3,]    3    7   11   15   19
[4,]    4    8   12   16   20
> B<-matrix(1:20,4,5,byrow = TRUE)
> B
     [,1] [,2] [,3] [,4] [,5]
[1,]    1    2    3    4    5
[2,]    6    7    8    9   10
[3,]   11   12   13   14   15
[4,]   16   17   18   19   20
> C<-A[1:3,1:3]
> C
     [,1] [,2] [,3]
[1,]    1    5    9
[2,]    2    6   10
[3,]    3    7   11
> D<-B[,-3]
> D
     [,1] [,2] [,3] [,4]
[1,]    1    2    4    5
[2,]    6    7    9   10
[3,]   11   12   14   15
[4,]   16   17   19   20

image-20220905114844487

image-20220905115125086

10.设x=(1,3,5,7,9)T,构造5×3的矩阵X,其中第1列全为1,第2列为向量x,第3列的元素为x2,并给矩阵的3列命名,分别为Const, Univariate和Quadratic。

> x<-c(1,3,5,7,9)
> Const<-c(1)
> Univariate<-x
> Quadratic<-x*x
> X<-cbind(Const,Univariate,Quadratic)
> X
     Const Univariate Quadratic
[1,]     1          1         1
[2,]     1          3         9
[3,]     1          5        25
[4,]     1          7        49
[5,]     1          9        81

image-20220905121035934

11.假设某班有50位同学,某门课程的平均成绩为75,标准差为5,成绩分布为正态分布,请生成服从该分布的成绩向量。

> score<-trunc(rnorm(50,75,5))
> score
 [1] 71 76 72 74 76 71 75 78 86 77 69 71 68 69 73 74 71 77 78 69 74 70 77 72 66 75 85 79 72 72 75
[32] 76 63 74 81 68 82 71 71 74 72 74 71 76 81 73 71 69 78 74

image-20220905121306876

12.图形处理:绘制散点图,根据不同因子,设置不同颜色

1.) 根据基础包basesets中的数据集airquality的两列数据:Wind 和Temp绘制散点图,图形标题为“The scatter plot of temp and wind”。散点图中点的属性自定。

2.) 每个月份对应一个颜色,数据对应到颜色上面,需要加上aes函数

> library(ggplot2)
> ggplot(data=airquality,aes(x=Wind,y=Temp,color=factor(Month)))+
  geom_point(shape=21,alpha=0.5,size=0.5,stroke=1.5)+
  ggtitle("The scatter plot of temp and wind")

12.图形处理:绘制散点图,根据不同因子,设置不同颜色

1.) 根据基础包basesets中的数据集airquality的两列数据:Wind 和Temp绘制散点图,图形标题为“The scatter plot of temp and wind”。散点图中点的属性自定。

2.) 每个月份对应一个颜色,数据对应到颜色上面,需要加上aes函数

> library(ggplot2)
> ggplot(data=airquality,aes(x=Wind,y=Temp,color=factor(Month)))+
  geom_point(shape=21,alpha=0.5,size=0.5,stroke=1.5)+
  ggtitle("The scatter plot of temp and wind")

image-20220905135134415

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

W_chuanqi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值