前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ggplot2学习笔记:美国1850年到2013年间陆地温度变化

ggplot2学习笔记:美国1850年到2013年间陆地温度变化

作者头像
用户7010445
发布2020-03-03 14:56:13
6330
发布2020-03-03 14:56:13
举报
原文地址

Land Temperature Change in the Continental US 1850-2013

读入数据
  • 这一步学到一个新函数 tidyr::separate() 作用是根据指定分隔符拆分列 通过函数help(package="tidyr")查看separate()函数的帮助文档里面的实例
代码语言:javascript
复制
> df <- data.frame(x = c(NA, "a.b", "a.d", "b.c"))
> df %>% separate(x, c("A", "B"))
     A    B
1 <NA> <NA>
2    a    b
3    a    d
4    b    c

原文的用法是把时间数据拆分成年月日,比如 1999-11-11 拆分成三列,分别是年月日

  • 代码
代码语言:javascript
复制
library(dplyr)
library(tidyr)
library(ggplot2)
df<-read.csv("../../../Desktop/Data_analysis_practice/Kaggle/Climate_Change/GlobalLandTemperaturesByState.csv")
df1<-df%>%
  filter(Country=="United States")%>% #筛选国家为美国
  separate(col=dt,into=c("Year","Month","Day"),convert=T) #拆分df列为年月日三列
df1<-na.omit(df1)#删除缺失值
df2<-df1%>%
  filter(State!="Hawaii"&State!="Alaska")#删除Huwaii和Alaska
df2<-na.omit(df2)#删除缺失值
df3<-df2%>%
  filter(Year>1850)%>% #筛选年份大于1850
  group_by(Year)%>%
  summarise(Temp=mean(AverageTemperature))#按照年份计算平均值

得到下面分析用到的数据集df3

数据可视化
  • 美国1850到2013年间的年平均温度
代码语言:javascript
复制
ggplot(df3,aes(x=Year,y=Temp))+
  geom_point(aes(color=Temp))+
  geom_smooth()+
  scale_color_gradient(low="blue",high="red")+
  theme_bw()+
  labs(title="US Average Temperature 1850-2013")

image.png

  • 箱线图展示美国各个州年平均温度(时间间隔为40年)
代码语言:javascript
复制
df4<-df2 %>% 
  filter(Year==1850 | Year==1890 | Year==1930 | Year==1970 | Year==2013) %>%
  group_by(State,Year) %>% 
  summarise(Temp = mean(AverageTemperature))
head(df4)
df4$Year<-factor(df4$Year)
ggplot(df4,aes(x=Year,y=Temp,group=Year))+
  geom_boxplot(aes(fill=Year))+
  theme_bw()+
  ggtitle("Average Temperature for 40 Year Intervals")+
  labs(y="Average Temperature")

image.png

  • 方差分析探究5年间的年平均温度是否有差异
代码语言:javascript
复制
c<-aov(Temp~Year,data=df4)
summary(c)
TukeyHSD(c)
###
> summary(c)
             Df Sum Sq Mean Sq F value Pr(>F)  
Year          4    218   54.52   2.807 0.0264 *
Residuals   240   4662   19.43                 
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
> TukeyHSD(c)
  Tukey multiple comparisons of means
    95% family-wise confidence level

Fit: aov(formula = Temp ~ Year, data = df4)

$`Year`
                  diff        lwr      upr     p adj
1890-1850  0.415243197 -2.0323195 2.862806 0.9902477
1930-1850  0.607991497 -1.8395712 3.055554 0.9600409
1970-1850  0.420858844 -2.0267039 2.868422 0.9897377
2013-1850  2.666743197  0.2191805 5.114306 0.0250385
1930-1890  0.192748299 -2.2548144 2.640311 0.9995095
1970-1890  0.005615646 -2.4419471 2.453178 1.0000000
2013-1890  2.251500000 -0.1960627 4.699063 0.0877744
1970-1930 -0.187132653 -2.6346954 2.260430 0.9995637
2013-1930  2.058751701 -0.3888110 4.506314 0.1446209
2013-1970  2.245884354 -0.2016784 4.693447 0.0891290

方差分析结果P值小于0.05,说明有的组间存在差异,接下来通过邓肯检验确定具体哪些组之间存在差异 邓肯检验结果P值小于0.05是2013年和1850年

  • ggplot2作图展示邓肯检验结果
代码语言:javascript
复制
Tuk<-TukeyHSD(c)$Year
dfTuk<-as.data.frame(Tuk)
dfTuk$Year<-rownames(Tuk)
dfTuk$Year<-factor(dfTuk$Year,levels=dfTuk$Year)
colnames(dfTuk)<-c("diff","lwr","upr","padj","Year")
dfTuk
ggplot()+
  geom_point(data=dfTuk,aes(x=Year,y=lwr))+
  geom_point(data=dfTuk,aes(x=Year,y=upr))+
  geom_segment(data=dfTuk,aes(x=Year,xend=Year,
                              y=lwr,yend=upr))+
  geom_text(data=dfTuk,aes(x=Year,y=mean(lwr+upr),
                            label=ifelse(padj<0.05,"*","")),
            vjust=0.1,size=10)+
  geom_hline(yintercept=0,lty="dashed")+
  coord_flip()+
  theme_bw()+labs(x="")
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-09-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小明的数据分析笔记本 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 原文地址
  • 读入数据
  • 数据可视化
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档