R语言入门第四集 实验三:数据可视化
一、资源
【R语言】R语言数据可视化——东北大学大数据班R实训第三次作业
在r中rowsums_R语言初级教程(15): 矩阵(下篇)
R:使用ggplot2画散点图时出现错误: Continuous value supplied to discrete scale
二、答案更新纠正
-
1.2绘制散点图,分别展示年龄与男性的死亡率(对数即取log)的关系。
答案:
plot(df$Age,log(df$q_male))
应该为:
1.2绘制散点图,分别展示年龄、年份与男性的死亡率(对数即取log)的关系。
plot(df$Age,log(df$q_male)) plot(df$Year,log(df$q_male))
-
1.3绘制年龄与对数生存人数的散点图,分析这2个量的关系。
答案:
无
应该为:
1.3绘制年龄与对数生存人数的散点图,分析这2个量的关系。
df$L_exp <- df$L_female_exp+df$L_male_exp plot(df$Age,df$L_exp)
-
1.5绘制男性的对数死亡人数即(Male_death的对数)的直方图,来观察男性的对数死亡人口数的分布情况。
答案:
无
应该为:
1.5绘制男性的对数死亡人数即(Male_death的对数)的直方图,来观察男性的对数死亡人口数的分布情况。
hist(log(df$Male_death),breaks=100)
-
2.2数据探索,绘制一张图表来展示1990到2011年的HPI的变化情况,横轴是时间
(可以是数据的第一列),纵轴是HPI值。答案:
Sys.setlocale("LC_TIME","English") # 最初的date数据类型是factor class(houseIndex$date) head(houseIndex$date) # 然后转化为character houseIndex$date <- as.character(houseIndex$date) class(houseIndex$date) head(houseIndex$date) # 然后转化为Date houseIndex$date <- as.Date(houseIndex$date, "%d-%b-%y") class(houseIndex$date) head(houseIndex$date) plot(houseIndex$date,houseIndex$index,type = "l",main = "HIP(Canberra)-since 1990")
应该为:
2.2数据探索,绘制一张图表来展示1990到2011年的HPI的变化情况,横轴是时间(可以是数据的第一列),纵轴是HPI值。
Sys.setlocale("LC_TIME","English") houseIndex$date <- as.character(houseIndex$date) houseIndex$date <- as.Date(houseIndex$date, "%d-%b-%y") plot(houseIndex$date,houseIndex$index,type = "l",main = "HIP(Canberra) - from 1990 to 2011")
-
2.4为了进一步了解HPI的波动,计算其每个月的增长率。绘图时,增长率为正数的月份由加号(“+”)表示,为负的用(“o”)表示。
答案:
无
应该为:
2.4为了进一步了解HPI的波动,计算其每个月的增长率。绘图时,增长率为正数的月份由加号(“+”)表示,为负的用(“o”)表示。
houseIndex$rates <- houseIndex$delta/houseIndex$index[houseIndex$rates] houseIndex$rates[1] <- (houseIndex$index[1]-1)/1 houseIndex$cyl <- houseIndex$rates houseIndex$cyl[houseIndex$cyl>0]<- 3 houseIndex$cyl[houseIndex$cyl<0]<- 1 library(ggplot2) ggplot(houseIndex, aes(date, rates))+ geom_point(shape=houseIndex$cyl)
-
2.6绘制一个箱线图,来查看HPI的增长率的分布情况。
答案:
boxplot(rateMatrix,ylab="HPI Increase Rate")
应该为:
2.6绘制一个箱线图,来查看HPI的增长率的分布情况。
boxplot(houseIndex$rates,ylab="HPI Increase Rate")
三、答案
实验三 数据可视化
题目1:
1.1通过读取文件death rate.csv获取数据保存到df中,简单分析数据,获取共有数据多少条,是否有缺失值或是异常值,若存在这样的数据,将这些数据剔除;对于死亡率来说,它的值域是0<q<=1 。【注:1-6题中的死亡率,只考虑男性的死亡率】
df <-read.csv("death rate.csv")
dim(df)
sum(rowSums(is.na(df)) > 0)
nrow(df) - nrow(df[df$q_male > 0 & df$q_male <= 1, ])
nrow(df)
df <- na.omit(df)
nrow(df)
df <- df[df$q_male > 0 & df$q_male <= 1, ]
nrow(df)
1.2绘制散点图,分别展示年龄、年份与男性的死亡率(对数即取log)的关系。
plot(df$Age,log(df$q_male))
plot(df$Year,log(df$q_male))
1.3绘制年龄与对数生存人数的散点图,分析这2个量的关系。
df$L_exp <- df$L_female_exp+df$L_male_exp
plot(df$Age,df$L_exp)
答:根据年龄与对数生存人数的散点图,可知这2个量的关系为随着年龄的增大,对数生存人数逐渐降低,且降低的幅度快速增大。
1.4绘制直方图来观察一下男性死亡人数的分布。
hist(df$Male_death,breaks=100)
1.5绘制男性的对数死亡人数即(Male_death的对数)的直方图,来观察男性的对数死亡人口数的分布情况。
hist(log(df$Male_death),breaks=100)
1.6计算df的各变量的相关系数,并画出相关图。【用corrgram包】
install.packages("corrgram")
library(corrgram)
options(digits=2)
cor(df)
corrgram(df,
order=TRUE,
lower.panel=panel.shade,
upper.panel=panel.pie,
text.panel=panel.txt,
main="Corrgram of df intercorrelations")
题目2:
2.1通过读取文件House-handle.csv获取数据保存到houseIndex中。
houseIndex<-read.csv("House-handle.csv")
2.2数据探索,绘制一张图表来展示1990到2011年的HPI的变化情况,横轴是时间(可以是数据的第一列),纵轴是HPI值。
Sys.setlocale("LC_TIME","English")
houseIndex$date <- as.character(houseIndex$date)
houseIndex$date <- as.Date(houseIndex$date, "%d-%b-%y")
plot(houseIndex$date,houseIndex$index,type = "l",main = "HIP(Canberra) - from 1990 to 2011")
2.3绘制一张图,展示每个月的HPI的增长量,表示为delta,在0的位置添加参考线。【注:增长量,可以用下一条减上一条来计算;第一条的上一条的HPI值可以认为是1】
houseIndex$rates <- which(houseIndex$index==houseIndex$index)-1
houseIndex$rates[1] <- 1
houseIndex$delta <-houseIndex$index-houseIndex$index[houseIndex$rates]
houseIndex$delta[1] <- houseIndex$index[1]-1
plot(houseIndex$date,
houseIndex$delta,
type="p",
main="Increase in HPI",
xlab="时间",
ylab="delta")
abline(h=0,lty = 3)
2.4为了进一步了解HPI的波动,计算其每个月的增长率。绘图时,增长率为正数的月份由加号(“+”)表示,为负的用(“o”)表示。
houseIndex$rates <- houseIndex$delta/houseIndex$index[houseIndex$rates]
houseIndex$rates[1] <- (houseIndex$index[1]-1)/1
houseIndex$cyl <- houseIndex$rates
houseIndex$cyl[houseIndex$cyl>0]<- 3
houseIndex$cyl[houseIndex$cyl<0]<- 1
houseIndex$gear <-houseIndex$rates
houseIndex$gear[houseIndex$gear>0]<- 3
houseIndex$gear[houseIndex$gear<0]<- 1
library(ggplot2)
ggplot(houseIndex, aes(date, rates))+
geom_point(aes(shape=factor(cyl)),size=3)+
scale_shape_manual(values = c(1,3))+
theme(legend.position = 'none')
2.5对HPI增长率建立表格,其中每一行代表一个月份,每一列代表一个年份,显示前四年的数据(HPI增长率舍入到小数点后4位);并绘制一个HPI的平均年增长率和HPI的平均月增长率(全部年份的年增长率(列平均)和月增长率(行平均))。
rateMatrix <- xtabs(rates~month+year,data=houseIndex)
round(rateMatrix[,1:4],digits=4)
yearmean <- colMeans(rateMatrix)
barplot(yearmean,main="HPI的平均年增长率",xlab="年",ylab="平均年增长率")
mouthmean <- rowMeans(rateMatrix)
plot(1:12,mouthmean,type="b",
main="HPI的平均月增长率",xlab="月",ylab="平均月增长率")
2.6绘制一个箱线图,来查看HPI的增长率的分布情况。
boxplot(houseIndex$rates,ylab="HPI Increase Rate")