r - 按年份计算缺失数字的百分比
问题描述
我有每天的最低温度、最高温度、最低露点和最高露点。此数据包含 NaN,因此我想知道在给定年份中丢失的数据百分比 (NaN),然后是按列列出的所有数据中百分比的总和;
按年份计算列中 NaN 的百分比以及整个期间的总百分比(1948-2018)
我的数据是
Station Date Month Day Year MaxTemp MinTemp MaxDewPoint MinDewPoint
ORD 1/1/1948 1 1 1948 35.6 26.6 34.16 -27.4
ORD 1/2/1948 1 2 1948 -2 -16 -16.96 -27.04
ORD 1/3/1948 1 3 1948 -4 -26 -12 -26
ORD 1/4/1948 1 4 1948 -5 -26 -15 -26
ORD 1/5/1948 1 5 1948 8 -25 3 NaN
ORD 1/6/1948 1 6 1948 -11 -25 -24 -25
ORD 1/7/1948 1 7 1948 1 -23 NaN -23
ORD 1/8/1948 1 8 1948 1 -22 -9 NaN
ORD 1/9/1948 1 9 1948 NaN -22 -5 -22
ORD 1/10/1948 1 10 1948 10 NaN -2 -22
ORD 1/11/1948 1 11 1948 -11 -21 -23 -21
ORD 1/12/1948 1 12 1948 3 -12 -7.96 -20.92
ORD 1/13/1948 1 13 1948 6.98 -7.6 -7.6 -20.2
ORD 1/14/1948 1 14 1948 3.92 -9.4 -11.2 NaN
ORD 1/15/1948 1 15 1948 6 -7 -5.98 NaN
ORD 1/16/1948 1 16 1948 3 -11 -7.96 -20.02
到目前为止我的代码,
install.packages("dplyr")
library(dplyr)
install.packages("stringr")
library(stringr)
#setting up workspace in the folder#
setwd("D:/Climate Data Analysis/Asignment 1")
#opening a CSV file in r program#
data<- read.csv("chiacagost.csv", header=TRUE, sep=",")
#making data frame of the variables#
dframe<- data.frame(data)
# Missing percentage of the data by column
MisMxTMP<-dframe%>%summarise(NAMisMxTMP=sum(is.na(Max.Temp)/length(Max.Temp)))*100
misMnTMP<-dframe%>%summarise(NAmisMnTMPL=sum(is.na(Min.Temp)/length(Min.Temp)))*100
MisMxDTMP<-dframe%>%summarise(NAMisMxDTMP=sum(is.na(Max.Dew.Point)/length(Max.Dew.Point)))*100
MisMnDTMP<-dframe%>%summarise(NAMisMnDTMP=sum(is.na(Min.Dew.Point)/length(Min.Dew.Point)))*100
我能够计算缺失数据的总百分比,但我想按年份知道,以便我可以在分析中排除缺失百分比最大的年份
解决方案
要按年份和按变量计算缺失数据的百分比:
> dframe %>%
+ tidyr::gather(var, value, MaxTemp, MinTemp, MaxDewPoint, MinDewPoint) %>%
+ dplyr::group_by(Year, var) %>%
+ dplyr::summarise(pct_na = sum(is.nan(value)) / n())
# A tibble: 4 x 3
# Groups: Year [?]
Year var pct_na
<int> <chr> <dbl>
1 1948 MaxDewPoint 0.0625
2 1948 MaxTemp 0.0625
3 1948 MinDewPoint 0.25
4 1948 MinTemp 0.0625
要获得全年缺失数据的百分比,只需更改group_by(Year, var)
为group_by(Year)
.
数据
dframe <- read.table(textConnection(gsub(" ORD ", "\nORD ", "Station Date Month Day Year MaxTemp MinTemp MaxDewPoint MinDewPoint ORD 1/1/1948 1 1 1948 35.6 26.6 34.16 -27.4 ORD 1/2/1948 1 2 1948 -2 -16 -16.96 -27.04 ORD 1/3/1948 1 3 1948 -4 -26 -12 -26 ORD 1/4/1948 1 4 1948 -5 -26 -15 -26 ORD 1/5/1948 1 5 1948 8 -25 3 NaN ORD 1/6/1948 1 6 1948 -11 -25 -24 -25 ORD 1/7/1948 1 7 1948 1 -23 NaN -23 ORD 1/8/1948 1 8 1948 1 -22 -9 NaN ORD 1/9/1948 1 9 1948 NaN -22 -5 -22 ORD 1/10/1948 1 10 1948 10 NaN -2 -22 ORD 1/11/1948 1 11 1948 -11 -21 -23 -21 ORD 1/12/1948 1 12 1948 3 -12 -7.96 -20.92 ORD 1/13/1948 1 13 1948 6.98 -7.6 -7.6 -20.2 ORD 1/14/1948 1 14 1948 3.92 -9.4 -11.2 NaN ORD 1/15/1948 1 15 1948 6 -7 -5.98 NaN ORD 1/16/1948 1 16 1948 3 -11 -7.96 -20.02")), header = T)
推荐阅读
- c++ - 如何在 QWebView 中打开文件?
- javascript - 加载文件后如何执行javascript文件
- azure - Azure Web App 中 EntityFramework Core 的连接字符串
- django - Django - 使用 ManyToMany 字段将相同的对象集添加到查询集中
- javascript - 幻灯片库中 Chrome 中的图像渲染速度太慢
- python - 安全地获取嵌套的 JSON 对象
- python - 无法在 Python 3.9 64 位中使用 pip 安装 matplotlib?
- python - 如何让 SymPy 用 1 替换像 1.0 这样的整数
- pine-script - Pinecoder 回测引擎外部信号
- heroku - 部署中的heroku opencv4nodejs错误