r语言基础题库及详解答案 r语言r编程题库_数据科学

一、(40 分)
请使用 nycflight13 回答以下问题:
(1) 请用 flights 表单找出出发时间没有延误,但是到达时间的所有航班。
(2)在(1)数据的基础上计算到达每个目的地的航班数量,平均飞行距离和平
均到达延误时间。
(3)在(2)的基础上在一张图中画出平均到达延误时间和平均飞行距离关系的
散点图和平滑曲线图。
(4)用 flights 数据,然后根据 origin 和 time_hour 两个变量与 weather 表格进行
左连接。
二、(20 分)
请用 map 函数从 1 到 100 中随机抽取 10 组数,这 10 组数的样本量分别为 10:19;然后
计算这 10 组数的均值和标准差
三、(20 分)
请编写函数分别完成以下两个问题:
(1)编写函数 get.root(a, b, c),求解一元二次方程ܽݔଶ ൅ ܾ ܿ ൅ ݔൌ 0的实根;
(2)已知某一元二次方程ܽݔଶ ൅ ܾ ܿ ൅ ݔൌ 0的三个系数都是随机变量,其中 a 服从[1, 5]上的
均匀分布, b 服从正态分布 N(3, 10), c 服从均值为 1 的指数分布。请编写函数 get.prob(),
计算该方程有实根的概率。
四、(20 分)
请编写一个函数,能够将一个向量中的字符串按逆序排序。我们通常使用的字符串排序是根
据字符串的首字母从小到大排序,所谓逆序排序是指根据字符串的尾字母从小到大排序,例
如:

c("economics", "employment", "management", "finance")


的逆序排序结果是:

c("finance", "economics", "management", "employment"


  下面一一给出问题的解答

library(nycflights13) #加载包
library(dplyr)#数据处理
colnames(flights)=c("年","月","日","起飞时间","计划起飞时间","起飞延误",
                    "到达时间","计划到达时间","到达延误","承运商缩写",
                     "flight","飞机尾号","始发地","目的地","空中时间",
                       "机场间距","hour","minute","time_hour" )#修改列名
df=flights
head(df) #查看数据

r语言基础题库及详解答案 r语言r编程题库_字符串_02

library(tidyverse) #加载包

shuju=df%>%
filter(起飞延误 == 0 & 到达延误 != 0)#出发时间无延误,到达时间有延误的航班

r语言基础题库及详解答案 r语言r编程题库_字符串_03

shuju%>%
group_by(目的地)%>%
count()#每个目的地的航班数量

anyNA(shuju$flight)#检查有无缺失数据
shuju1=shuju%>%
group_by(目的地)%>%
summarise(Mean=mean(flight)) # 平均飞行距离

anyNA(shuju$到达延误)#检查有无缺失数据
shuju2=shuju%>%
group_by(目的地)%>%
summarise(Mean=mean(到达延误)) #平均到达延误时间

这里的结果就不展示了

shuju3=left_join(x = shuju1,y = shuju2,by="目的地" )

a=colors()
b=sample(a,99,replace=F)
ggplot(shuju3,aes(x=Mean.y,y=Mean.x,fill=目的地))+
geom_point(shape=21,alpha=0.8,colour="black")+
geom_smooth()+
scale_fill_manual(values=b)#画出平均到达延误时间和平均飞行距离关系的
散点图和平滑曲线图

df=df%>%
rename(origin=始发地)
left_join(weather,df,by=c("origin","time_hour"))  #左连接

第二问

data=list()
f=function(x){
          a=c(10:19)
          for(i in seq_along(a) ){
                 data[[i]]=sample(x,a[i],replace=T)
                                 }
             data }
d=map(100,f)#生成列表
a=list()
for(i in 1:10){
       a[i]=d[[1]][i] 
              }

sapply(a,mean) #
sapply(a,sd)

r语言基础题库及详解答案 r语言r编程题库_数据_04

第三问

get.root=function(a,b,c){
                  discrim<-b^2-4*a*c     
                  if(discrim>0){
roots<-c((-b+sqrt(b^2-4*a*c))/(2*a),(-b-sqrt(b^2-4*a*c))/(2*a))
}else{
if(discrim==0){
roots<- -b/(2*a)
} else{
roots<-c()}
}
 roots } #求根函数

#基于蒙特卡罗模拟
a=runif(10000,1,5)
b=rnorm(10000,3,10)
c=rexp(10000,1)
get.prob=function(a,b,c){
              discrim=b^2-4*a*c 
               sum(discrim>=0)/10000    }
get.prob(a,b,c)

r语言基础题库及详解答案 r语言r编程题库_数据_05

第四问

w=c("economics", "employment", "management", "finance")
C=c(length(w))
data=data.frame(letters,shu=1:26)
rownames(data)=letters
fd=function(x){
      a=nchar(x)
      for(i in 1:length(a)){
        C[i]=substr(x[i],a[i],a[i])
                        }
           b=data[C,]$shu
           x[order(b)]  } #排序函数

r语言基础题库及详解答案 r语言r编程题库_数据科学_06

以上就是关于问题的所有解答