【问题标题】:Imputing missing values in R (NO2 in different stations)估算 R 中的缺失值(不同站的 NO2)
【发布时间】:2022-11-04 19:06:49
【问题描述】:

我想用同一日期过去几年的平均值替换缺失值。

我认为为此值得使用 R 的 tidyverse 中的 dplyr 包按月和日对数据进行分组。如何对数据子集进行均值插补?

DATA <- read.csv('DateCaratNO2.csv')
DATA <- as.data.frame(DATA)
DATA$Full.Data <- as.POSIXct(DATA$date, format = "%m/%d/%Y")
DATA$day <- format(DATA$Full.Data, "%d")
DATA$month <- format(DATA$Full.Data, "%m")
DATA$year <- format(DATA$Full.Data, "%Y")
attach(DATA)
library(dplyr)
df <- DATA %>% mutate(day = lubridate::floor_date(Full.Data, "day"),
                      month = lubridate::floor_date(Full.Data, "month")) %>%
  dplyr::group_by(day, month, ID) %>%
  mutate(NO2 = replace_na(NO2, mean(NO2, na.rm=TRUE)))

我需要用特定站点的同一天和同一月的平均值替换缺失值。任何帮助表示赞赏!

【问题讨论】:

  • 这段代码有什么问题?您是否收到错误作为输出?哪一个?
  • 当我执行“write.csv”时,缺失值得到 NA 值。即平均值的替换不通过。
  • 您能否分享一个数据集来重现您的问题以及您使用write.csv() 的部分代码?

标签: r missing-data


【解决方案1】:

要计算分组数据的平均值,我会使用 summarise:

group_by(day, month, ID) %>%
  summarise(
    average = mean(value, na.rm = TRUE)
  ) %>%
  ungroup()

这有帮助吗?

【讨论】:

  • 看起来数据是在几小时或更短的时间内采样的,所以总结一下你每天只返回 1 个度量的所有内容
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-04-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-02
相关资源
最近更新 更多