每月在r中重新采样数据

问题描述 投票:1回答:1

我下面有一个很大的csv文件示例,

> data <- fread('data.csv', sep = ",")
> data
              name year value       
    1: Afghanistan 1800   11
    2:     Albania 1800   22
    3:     Algeria 1800   6
    4: Afghanistan 1801   48
    5:     Albania 1801   60
    6:     Algeria 1801   120 

   ---                                  
46509: Afghanistan 2040   108
46510:     Albania 2040   72
46511:     Algeria 2040   36


我的目标是将该数据重新采样到每月并插值值列,如下所示,(阿富汗1800)


              name      year    value       
    1: Afghanistan     Jan 1800   1
    1: Afghanistan     Feb 1800   2
    1: Afghanistan     Mar 1800   3
    1: Afghanistan     May 1800   4
    1: Afghanistan     Jun 1800   5
    1: Afghanistan     Jul 1800   6
    1: Afghanistan     Aug 1800   7
    1: Afghanistan     Sep 1800   8
    1: Afghanistan     Oct 1800   9
    1: Afghanistan     Nov 1800   10
    1: Afghanistan     Dec 1800   11
    2:     Albania     Jan 1800   2



   ---                                  
46509: Afghanistan         2040   108
46510:     Albania         2040   72
46511:     Algeria         2040   36

我尝试了几种选择都没有成功,最近的选择如下所示,],>

> data <- as.zoo(data)
> m <- na.approx(data(time(data), 0:11/12, "+"))
Error in approx(x[!na], y[!na], xout, ...) : 
  need at least two non-NA values to interpolate
In addition: Warning messages:
1: In data(time(data), 0:11/12, "+") : data set ‘time(data)’ not found
2: In data(time(data), 0:11/12, "+") : data set ‘0:11/12’ not found
3: In data(time(data), 0:11/12, "+") : data set ‘+’ not found
4: In xy.coords(x, y, setLab = FALSE) : NAs introduced by coercion
> head(m)
           Afghanistan Albania  Algeria 
1800-01-31      11     24          6
1800-02-28      11     24          6
1800-03-31      11     24          6 
1800-04-30      11     24          6
1800-05-31      11     24          6
1800-06-30      11     24          6

关于如何达到我想要的结果的想法?

[我在下面有一个很大的csv文件示例,>数据数据名称年份值1:阿富汗1800 11 2:阿尔巴尼亚1800 22 3:...

r dplyr data.table tidyverse zoo
1个回答
0
投票

我将执行以下操作:

© www.soinside.com 2019 - 2024. All rights reserved.