【问题标题】:How to add interpolated NA values in a dataset [duplicate]如何在数据集中添加插值 NA 值 [重复]
【发布时间】:2021-08-29 03:11:50
【问题描述】:

我有这个名为“newData”的数据框(57 行,9 列),我试图用插值近似值替换 NA 值并绘制图表。我尝试过使用 na.approx 和 interp1 等函数,但我没能做到。关于如何解决这个问题的任何解决方案?

years city SO2 NO2 O3 PM10 PM2.5 CO Benzen
2012 Tirane 6.30 23.83 55.79 35.44 19.24 0.43 3.95
2013 Tirane NA 27.30 51.03 32.56 16.45 NA NA
2014 Tirane 15.52 35.01 32.64 54.06 NA 0.85 2.76

【问题讨论】:

  • @RonakShah 这行得通(有些值在 4 左右被遗漏了),但它确实将整个数据框转换为一个列表,有没有办法让它保持一个数据框?
  • @RonakShah 我确实重新分配了它并返回了一个列表(需要转置)以及在分配期间丢失的列年份和城市。
  • 你能提供一个可重现的例子吗?我在答案中添加了一个示例,它似乎适用。我还从原始答案中删除了lapply

标签: r dataframe statistics dataset data-science


【解决方案1】:

你可以使用zoo::na.approx -

#Generate data
set.seed(123)
df <- data.frame(id = letters[1:10], a = rnorm(10), b = rnorm(10))
#assign random NA's
df$a[c(3, 5)] <- NA
df$b[c(1, 6, 7)] <- NA
#apply na.approx
df[-1] <- zoo::na.approx(df[-1])
df

#   id           a          b
#1   a -0.56047565         NA
#2   b -0.23017749  0.3598138
#3   c -0.07983455  0.4007715
#4   d  0.07050839  0.1106827
#5   e  0.89278669 -0.5558411
#6   f  1.71506499 -1.0260998
#7   g  0.46091621 -1.4963585
#8   h -1.26506123 -1.9666172
#9   i -0.68685285  0.7013559
#10  j -0.44566197 -0.4727914

【讨论】:

  • 谢谢,我只需要把它改成 df[-(1:2)]
猜你喜欢
  • 1970-01-01
  • 2023-03-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-19
  • 2011-11-03
  • 2016-08-30
相关资源
最近更新 更多