R-语言基础练习题(2)

---------------R语言的作业题,如有不对欢迎指正------------------

一、 数据处理

1、 导入数据 agriculture.txt,将其命名为 agr。
(1) 检测数据框中缺失值,并删除缺失值
(2) 在 agr 中创建新变量存储 x2,x8 均值,在 agr 中创建新变量分别存储 x4,x5;数据标准化后值,并删除 x2,x4,x5,x8
(3) 将 date 转化为日期值,并将变量重命名为 TimeDate
(4) 选择 145>x1>65 的观测,再随机抽取 8 个样本(无放回)
(5) 按 x3 从高到低排序。

(1) 检测数据框中缺失值,并删除缺失值

> setwd("C:\\Users\\admin\\Desktop\\data\\course\\Rlearn\\shiyan\\shiyan2")
> agr= read.table("agriculture.txt",header = T)
>  head(agr)
> is.na(agr)#检测缺失值是否存在##大数据慎用
> agr=na.omit(agr)#删除含有缺失值的行

在这里插入图片描述
(2) 在 agr 中创建新变量存储 x2,x8 均值,在 agr 中创建新变量分别存储 x4,x5;数据标准化后值,并删除 x2,x4,x5,x8

> options(digits = 2)#设置小数
> mean28=apply(agr[,c("x2","x8")],1,mean)#提取两列后按行计算均值
> scale45=scale(agr[,c("x4","x5")],center=T,scale=T)
> agr=cbind(agr,mean28,scale45)
> agr=agr[c(-3,-5,-6,-9)]##删除不要的列

(3) 将 date 转化为日期值,并将变量重命名为 TimeDate

> agr$TimeDate=as.Date(agr$date,"%d/%m/%Y")#产生新的一列转化为日期型
> agr=agr[,-7]
> head(agr)

在这里插入图片描述
(4) 选择 145>x1>65 的观测,再随机抽取 8 个样本(无放回)

> agr1=agr[agr$x1>65 & agr$x1<145,]
> N=nrow(agr1)
> library(sampling)
> s=srswor(8,N)  #从 N 个单元里简单随机抽取 8 标记 
> agr2=getdata(agr1,s)  #获取简单随机抽样样本数据 
> head(agr2)

在这里插入图片描述
(5) 按 x3 从高到低排序。

> regar=agr2[order(-agr2$x3),]
> regar

2、 设定随机种子3,模拟生成1000 个参数 n=10,p=0.4 的二项分布随机数,并计算其均值和方差与理论结果进行比较。

> options(digits = 7)#设置小数
> ####第二题
> set.seed(3)
> data1=rbinom(1000,10,0.4)
> mean(data1)
> var(data1)

3、 假设某高校 500 名女生血清蛋白含量(g/L)服从均值为 75,标准差为 3 的正态分布。
(1) 设定随机种子 5,模拟生成 500 女生血红蛋白含量的数据,并计算标准差,
四分位数。

> set.seed(5)
> data2=rnorm(500,75,3)
> sd(data2)
> quantile(data2,probs=c(0.25,0.5,0.75),na.rm=TRUE) #计算分位数

(2) 此正态分布下显著性水平为 10%的置信区间(双侧)为?这些女生数据有多少个处于这个置信区间内。

> t.test(data2,alternative = "two.side",mu=75,conf.level = 0.1)
> count=0###计数置信区间里有多少个姐姐
> for(i in data2){
+   if(74.96689 <=i & i<=75.00083){
+     count=count+1
+   }
+ }
> print(count)

二、自编函数

4、自编函数计算威布尔分布概率密度值。

> weibull=function(x,lambda,k){
+   if(x>=0){
+     if(lambda>0 & k>0){
+       f=(k/lambda)*((x/lambda)^(k-1))*exp(-(x/lambda)^k)
+       return(f)
+     }else{
+       return("lambda或k不符合要求")
+     }
+   }else{
+     return(0)
+   }
+ }
> weibull(7,3,4)
  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值