R语言入门第五集 实验四:数据分析
R语言入门第五集 实验四:数据分析
一、资源
【R语言】R语言函数练习——东北大学大数据班R实训第四次作业
R语言:常用apply函数(apply,tapply,sapply,lapply)用法介绍
R语言aggregate函数
R语言学习笔记(六)——apply函数系列与相关函数(by,aggregate,cut,factor)
prop.table函数
R语言table()函数
列联表
R语言学习笔记 —— table 函数的应用
margin.table()函数:
R语言-频数统计函数
卡方检验的R语言实现
卡方独立性检验chisq.test()
克莱姆V(克莱姆相关系数、克莱姆关联系数、独立系数)的MATLAB计算
列联相关系数
R语言入门之相关性
R语言安装包出现的问题及解决方案
Pearson、Spearman、Polyserial相关系数简介及R计算
协方差矩阵和相关系数矩阵(R语言)
R语言警告:Cannot compute exact p-value with ties的处理方法
R语言进行的变量相关性显著性检验
二、答案更新纠正
原答案中的第一、三题并无更新,但是缺少了第二题的全部内容,第二题题目及答案见下方,不在此处另作篇幅叙述。
三、答案
实验四 数据分析
题目1:
1.1通过读取“hospital-data.csv”将数据保存到df中,获取该数据的条数;查看数据中的前5条数据。
df<-read.csv("hospital-data.csv")
nrow(df)
head(df,n=5)
1.2查看数据概况;求得邮编的范围。
summary(df)
range(df$ZIP.Code)
1.3我们默认电话号码是个数值,没有实际意义;应用sapply函数,通过调用用户自定义函数,返回电话号码的最大值,最小值,均值,中位数,标准差和方差。
getSummary<-function(x,na.omit=FALSE){if(na.omit)x<-x[!is.na(x)] getMax<-max(x)getMin<-min(x)getMean<-mean(x)getMedian<-median(x)getSd<-sd(x)getVar<-var(x)return(c(max=getMax,min=getMin,mean=getMean,median=getMedian,sd=getSd,var=getVar))
}
sapply(df["Phone.Number"], getSummary,na.omit=TRUE)
1.4利用aggregate求取各州的电话号码的中位数。
aggregate(df["Phone.Number"],by=list(State=df$State),median)
1.5利用by求取各城市的电话号码的最大值和最小值;显示结果的前3条数据。
getMax_Min<-function(x,na.omit=FALSE){if(na.omit){x<-na.omit(x)}getMax<-max(x)getMin<-min(x)return(c(max=getMax,min=getMin))
}
head(by(df["Phone.Number"],df$City,getMax_Min,na.omit=TRUE),n=3)
1.6对所属州生成简单的频数统计表;并将这个频数表转化为比例值。
mytable <- table(df$State)
mytable
mytable<-prop.table(mytable)
mytable
1.7建立所属州和医院类型的二维列联表,命名为mycontable;按列生成边际和。
mycontable<-table(df$State,df$Hospital.Type)
head(mycontable)
margin.table(mycontable, 2)
1.8利用 CrossTable建立所属乡镇和是否提供急救服务字段的二维列联表,命名
为mycrosstable。(注:安装gmodels 包)
library(gmodels)
mycrosstable <- CrossTable(df$County,df$Emergency.Services)
题目2:
2.1通过读取文件death rate.csv获取数据保存到death中,通过卡方检验来检验年龄与男性生存人口数(二级列联表)之间是否独立。
library(vcd)death<-read.csv("death rate.csv")death<-na.omit(death)deathTable<-table(death$Age,death$Male_Exp)chisq.test(deathTable)
答:从结果显示,p-value为1,可认为是Age,Male_Exp不独立,即年龄与男性生存人口数之间不独立,存在某种相关关系。
2.2通过assocstats函数来度量年龄与男性的死亡率(二级列联表)之间的相关性。
deathTable2<-table(death$Age,death$q_male)assocstats(deathTable2)
答:通过assocstats函数可以看到,列联系数(coefficient_of_contingency)的值接近1,克莱姆相关系数(Cramer’s_V)的值接近1,表明年龄与男性的死亡率之间具有很强的相关性。
2.3计算年龄与男性的死亡率之间的Pearson和Spearman相关系数;和death中所有变量的协方差。
death3<-death[c("Age","q_male")]death3 <- scale(death3)cor_pearson <- cor(death3, method = 'pearson')print("Pearson相关系数矩阵为:")cor_pearsonprint("Spearman相关系数矩阵为:")cor_spearman <- cor(death3, method = 'spearman')cor_spearmanprint("协方差为:")cov(death)
2.4检验女性生存人口数和男性生存人口数之间的相关性的显著性。
print("检验Pearson相关性的显著性为:")cor.test(death$Female_Exp,death$Male_Exp,alternative="two.sided",method="pearson")print("检验Spearman相关性的显著性为:")cor.test(death$Female_Exp,death$Male_Exp,alternative="two.sided",method="spearman",exact=FALSE)
题目3:
3.1通过读取文件outcome-of-care-measures.csv获取数据保存到care_df中,通过写一个名为best的函数,找到一个州中最好的医院,函数有两个参数,一个是有两个字母缩写的州名称,另一个是结果名称,包括(heart attack,heart failure,pneumonia),函数的返回结果为30天死亡率最低的医院名称。在处理排名的时候,如果出现死亡率相等的情况,将医院按照字母表顺序排序,取第一家医院。注意检查读入数据的类型,以免排序的时候出现问题!!
函数模板如下
best <-function(state, outcome) {
##code
}
函数要检查输入变量的有效性,如果输入一个无效的州名,函数应该停止程序,并提示”invalid state”,同样当输入的outcome参数有误时,应提示”invalid outcome”。
函数检验:
best(“TX”, “heart failure”)
best(“MD”, “heart attack”)
best(“MD”, “pneumonia”)
best(“BB”, “heart attack”)
best(“NY”, “hert attack”)
care_df <- read.csv("outcome-of-care-measures.csv")best <- function(state, outcome) { if (!state %in% care_df$State) return("invalid state") if (!outcome %in% c("heart attack", "heart failure", "pneumonia")) return("invalid outcome") a <- care_df[care_df$State == state,] if (outcome == "heart attack") { a <-a[a$Hospital.30.Day.Death..Mortality..Rates.from.Heart.Attack != "Not Available",] a$Hospital.30.Day.Death..Mortality..Rates.from.Heart.Attack<-as.numeric(a$Hospital.30.Day.Death..Mortality..Rates.from.Heart.Attack) b <-a[order(a$Hospital.30.Day.Death..Mortality..Rates.from.Heart.Attack), ] } else if (outcome == "heart failure") { a <-a[a$Hospital.30.Day.Death..Mortality..Rates.from.Heart.Failure != "Not Available",] a$Hospital.30.Day.Death..Mortality..Rates.from.Heart.Failure<-as.numeric(a$Hospital.30.Day.Death..Mortality..Rates.from.Heart.Failure) b <-a[order(a$Hospital.30.Day.Death..Mortality..Rates.from.Heart.Failure), ] } else{ a <-a[a$Hospital.30.Day.Death..Mortality..Rates.from.Pneumonia != "Not Available",] a$Hospital.30.Day.Death..Mortality..Rates.from.Pneumonia<-as.numeric(a$Hospital.30.Day.Death..Mortality..Rates.from.Pneumonia) b <-a[order(a$Hospital.30.Day.Death..Mortality..Rates.from.Pneumonia), ] } return(hospital = b[1,]["Hospital.Name"])}
进行函数检验:
hospital=best("TX", "heart failure")hospital
hospital=best("MD", "heart attack")hospital
hospital=best("MD", "pneumonia")hospital
hospital=best("BB", "heart attack")hospital
hospital=best("NY", "hert attack")hospital
R语言入门第五集 实验四:数据分析相关推荐
- R语言入门第六集 实验五:综合应用
R语言入门第六集 实验五:综合应用 一.资源 [R语言]沈阳地铁数据处理及站间流量统计--R语言第五次实训 lubridate-轻松处理日期时间 数据整理-dplyr包(mutate系列) CEILI ...
- R语言入门第三集 实验二:基本数据处理
R语言入门第三集 实验二:基本数据处理 一.资源 [R语言]R语言数据处理--东北大学大数据班R实训第二次作业 二.答案更新纠正 2.11.从df中选取date . item_id . cate_id ...
- R语言入门第四集 实验三:数据可视化
R语言入门第四集 实验三:数据可视化 一.资源 [R语言]R语言数据可视化--东北大学大数据班R实训第三次作业 在r中rowsums_R语言初级教程(15): 矩阵(下篇) R语言环境变量的设置 环境 ...
- Linux入门第五集!MySQL8在Linux上的安装!MySQL的Linux资源分享!
Linux入门第五集!MySQL8在Linux上的安装!MySQL的Linux资源分享! 一.Mysql的Linux版本下载! 博主采用的是mysql-8.0.25-1.el7.x86_64.rpm- ...
- webrtc 入门第五章 一对一视频通话实现
webrtc 入门第五章 一对一视频通话实现 一.介绍 在前面的章节我们学习了如何操作本地的设备摄像头,麦克风等,学会了如何进行本地的流媒体操作如录制,下载,同步等.在第三第四章节学习了webrt ...
- C语言易错题集 第四部
C语言易错题集 第四部 一.位操作相关 二.switch()相关 三.输出相关 四.实数相关 五.指针&a相关 六.指针访问数组元素相关 七.转义字符相关 八.类型提升问题 九.是不是正确的浮 ...
- 【R语言】第二章上机实验记录
书籍:<R语言与数据挖掘> 1. 实验目的 了解R语言中数据类型的判别及转换函数.应用方法 了解R语言中对数据结构操作的函数.应用方法 了解R语言中读写数据文件的方法 2.实验内容 掌握读 ...
- C# 编程入门第五课,VS2019程序调试,for循环,水仙花数,Console.Write,又一种类型变换,三元表达式,产生随机数
C# 编程入门第五课 文章目录 C# 编程入门第五课 1. VS2019程序调试 2. for循环 3. 水仙花数 4. Console.Write() 5. 又一种类型变换 6. 三元表达式 7.产 ...
- LaTeX入门第三集!LaTeX的几个应用!
LaTeX入门第三集!LaTeX的几个应用! 一.制作PPT Ctex+Texstudio beamer 制作slide(ppt)安装 二.画图 一般人们并不直接使用PGF底层命令,而是通过它前端Ti ...
最新文章
- Version 1.3.1_01 of the JVM is not suitable for this product.Version:1.4.1 or greater is required。
- BZOJ5319 洛谷4559 LOJ2551:[JSOI2018]军训列队——题解
- 天池赛题解析:零基础入门语义分割-地表建筑物识别-CV语义分割实战(附部分代码)
- 过滤请求绝技 — 布隆过滤器与布谷鸟过滤器
- C/C++ 时间相关用法
- Android 5.0 API 的变化——开发人员注意
- IIS5.1、IIS6.0、IIS7.5中安装配置MVC 3
- 【转】cron表达式详解
- github安装python包_使用PyCharm从GitHub安装Python包
- c语言编程智能交通灯系统,智能交通灯控制系统的研究
- Java获取本机ip地址的代码
- 【已解决】关于win10提示“为了对电脑进行保护,已经阻止此应用”
- 连接网络打印机报0x00000709解决方案
- Torch常用函数详解
- java计算机毕业设计ssm+vue酒店VIP客户管理系统
- Java通过mybatis插入Oracle数据库中Date格式不显示到时分秒问题
- 爪哇国新游记之三----自创动态数组类
- java实现支付宝二维码支付(Spring Boot)
- matlab菜鸡学习日志--------使用matlab解析NMEA-0183 协议获取经纬度以及航向角
- linux 批量 添加后缀名,Linux下批量修改后缀名(示例代码)