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语言入门第五集 实验四:数据分析相关推荐

  1. R语言入门第六集 实验五:综合应用

    R语言入门第六集 实验五:综合应用 一.资源 [R语言]沈阳地铁数据处理及站间流量统计--R语言第五次实训 lubridate-轻松处理日期时间 数据整理-dplyr包(mutate系列) CEILI ...

  2. R语言入门第三集 实验二:基本数据处理

    R语言入门第三集 实验二:基本数据处理 一.资源 [R语言]R语言数据处理--东北大学大数据班R实训第二次作业 二.答案更新纠正 2.11.从df中选取date . item_id . cate_id ...

  3. R语言入门第四集 实验三:数据可视化

    R语言入门第四集 实验三:数据可视化 一.资源 [R语言]R语言数据可视化--东北大学大数据班R实训第三次作业 在r中rowsums_R语言初级教程(15): 矩阵(下篇) R语言环境变量的设置 环境 ...

  4. Linux入门第五集!MySQL8在Linux上的安装!MySQL的Linux资源分享!

    Linux入门第五集!MySQL8在Linux上的安装!MySQL的Linux资源分享! 一.Mysql的Linux版本下载! 博主采用的是mysql-8.0.25-1.el7.x86_64.rpm- ...

  5. webrtc 入门第五章 一对一视频通话实现

    webrtc 入门第五章 一对一视频通话实现 一.介绍 ​ 在前面的章节我们学习了如何操作本地的设备摄像头,麦克风等,学会了如何进行本地的流媒体操作如录制,下载,同步等.在第三第四章节学习了webrt ...

  6. C语言易错题集 第四部

    C语言易错题集 第四部 一.位操作相关 二.switch()相关 三.输出相关 四.实数相关 五.指针&a相关 六.指针访问数组元素相关 七.转义字符相关 八.类型提升问题 九.是不是正确的浮 ...

  7. 【R语言】第二章上机实验记录

    书籍:<R语言与数据挖掘> 1. 实验目的 了解R语言中数据类型的判别及转换函数.应用方法 了解R语言中对数据结构操作的函数.应用方法 了解R语言中读写数据文件的方法 2.实验内容 掌握读 ...

  8. C# 编程入门第五课,VS2019程序调试,for循环,水仙花数,Console.Write,又一种类型变换,三元表达式,产生随机数

    C# 编程入门第五课 文章目录 C# 编程入门第五课 1. VS2019程序调试 2. for循环 3. 水仙花数 4. Console.Write() 5. 又一种类型变换 6. 三元表达式 7.产 ...

  9. LaTeX入门第三集!LaTeX的几个应用!

    LaTeX入门第三集!LaTeX的几个应用! 一.制作PPT Ctex+Texstudio beamer 制作slide(ppt)安装 二.画图 一般人们并不直接使用PGF底层命令,而是通过它前端Ti ...

最新文章

  1. Version 1.3.1_01 of the JVM is not suitable for this product.Version:1.4.1 or greater is required。
  2. BZOJ5319 洛谷4559 LOJ2551:[JSOI2018]军训列队——题解
  3. 天池赛题解析:零基础入门语义分割-地表建筑物识别-CV语义分割实战(附部分代码)
  4. 过滤请求绝技 — 布隆过滤器与布谷鸟过滤器
  5. C/C++ 时间相关用法
  6. Android 5.0 API 的变化——开发人员注意
  7. IIS5.1、IIS6.0、IIS7.5中安装配置MVC 3
  8. 【转】cron表达式详解
  9. github安装python包_使用PyCharm从GitHub安装Python包
  10. c语言编程智能交通灯系统,智能交通灯控制系统的研究
  11. Java获取本机ip地址的代码
  12. 【已解决】关于win10提示“为了对电脑进行保护,已经阻止此应用”
  13. 连接网络打印机报0x00000709解决方案
  14. Torch常用函数详解
  15. java计算机毕业设计ssm+vue酒店VIP客户管理系统
  16. Java通过mybatis插入Oracle数据库中Date格式不显示到时分秒问题
  17. 爪哇国新游记之三----自创动态数组类
  18. java实现支付宝二维码支付(Spring Boot)
  19. matlab菜鸡学习日志--------使用matlab解析NMEA-0183 协议获取经纬度以及航向角
  20. linux 批量 添加后缀名,Linux下批量修改后缀名(示例代码)

热门文章

  1. 示波器地线应用注意问题
  2. 示波器探头×1和×10的意义
  3. 二极管7种应用电路详解之二
  4. Istio如何使用相同的端口访问网格外服务
  5. jquery版本冲突问题
  6. ISAPI_Rewrite3.1相关知识
  7. 微信硬件平台智能路由行业解决方案
  8. 2月第4周中国五大顶级域名总量减1.8万 美国增10.8万
  9. Java语言中小数的取整
  10. 服务器安全狗V4.1增强版 新增修复多项功能