【R语言】R语言函数练习——东北大学大数据班R实训第四次作业
title: “R实训第四次作业”
output: html_notebook
题目1:
1.通过读取“hospital-data.csv”将数据保存到df中,获取该数据的条数;查看
数据中的前5条数据。
df<-read.csv("C:\\Users\\zzh\\Desktop\\R语言\\R第4次实训\\数据\\hospital-data.csv")
nrow(df)
head(df,n=5)
2.查看数据概况;求得邮编的范围。
summary(df)
range(df$ZIP.Code)
3.默认电话号码是个数值,没有实际意义;应用sapply函数,通过调用用户自定
义函数,返回电话号码的最大值,最小值,均值,中位数,标准差和方差。
getSummary<-function(x,na.omit=FALSE){
if(na.omit)
#X<-na.omit(x)
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)
4.利用aggregate求取各州的电话号码的中位数。
aggregate(df["Phone.Number"],by=list(State=df$State),median)
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)
6.对所属州生成简单的频数统计表;并将这个频数表转化为比例值。
# mytable <- with(df, table(State))
mytable <- table(df$State)
mytable
mytable<-prop.table(mytable) # proportions
mytable
7.建立所属州和医院类型的二维列联表,命名为mycontable;按列生成边际和。
# mycontable<-with(df, table(State,Hospital.Type))
mycontable<-table(df$State,df$Hospital.Type)
head(mycontable)
# mycontable <- xtabs(~ State+Hospital.Type, data=df)
# head(mycontable)
margin.table(mycontable, 2) # column sums
# addmargins(mycontable) # add row and column sums to table
8.利用CrossTable建立所属乡镇和是否提供急救服务字段的二维列联表,命名为
mycrosstable。(注:安装gmodels 包)
# install.packages("gmodels")
library(gmodels)
mycrosstable <- CrossTable(df$County,df$Emergency.Services)
题目2
题目2:
1.通过读取文件outcome-of-care-measures.csv获取数据保存到care_df中,编写一个名为 best的函
数,找到一个州中最好的医院,函数有两个参数,
一个是有两个字母缩写的州名称,
另一个是结果名称,包括(heart attack, heart failure, pneumonia),
函数的返回结果为30天死亡率最低的医院名称。
在处理排名的时候,如果出现死亡率相等的情况,将医院按照字母表顺序排序,取第一家医院。
注意检查读入数据的类型,以免排序的时候出现问题!!
care_df <- read.csv("C:\\Users\\zzh\\Desktop\\R语言\\R第4次实训\\数据\\outcome-of-care-measures.csv")
dim(care_df)
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"])
}
best("TX", "heart failure")
best("MD", "heart attack")
best("MD", "pneumonia")
best("BB", "heart attack")
best("NY", "hert attack")
大家好,我是[爱做梦的子浩](https://blog.csdn.net/weixin_43124279),我是东北大学大数据实验班大三的小菜鸡,非常向往优秀,羡慕优秀的人,已拿两个暑假offer,欢迎大家找我进行交流😂😂😂
这是我的博客地址:[子浩的博客https://blog.csdn.net/weixin_43124279]
——
版权声明:本文为CSDN博主「爱做梦的子浩」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。