2017-04-10 12 views
0

内na.approxとfill_by_function()()[線形補間]を使用する方法:私はPADRのドキュメントを通じてつもりdplyr

https://cran.r-project.org/web/packages/padr/vignettes/padr.html。私は42を補間したい今

# A tibble: 307 × 2 
    time_stamp_day nr 
      <date> <int> 
1  2015-12-12 79 
2  2015-12-13 42 
3  2015-12-14 NA 
4  2015-12-15 NA 
5  2015-12-16 NA 
6  2015-12-17 NA 
7  2015-12-18 88 
8  2015-12-19 NA 
9  2015-12-20 NA 
10  2015-12-21 NA 
# ... with 297 more rows 

:中

library(tidyverse) 
library(padr) 
library(zoo) 

set.seed(123) 

emergency %>% 
    filter(title == 'EMS: DEHYDRATION') %>% 
    thicken(interval = 'day') %>% 
    group_by(time_stamp_day) %>% 
    summarise(nr = n() + as.integer(runif(1, 1, 999))) %>% 
    pad() 

結果:データに線形補間(zoo::na.approx())を利用するために、わずかにビネット例を変更

はエラーを生成しています直線的に88になります。

emergency %>% 
filter(title == 'EMS: DEHYDRATION') %>% 
thicken(interval = 'day') %>% 
group_by(time_stamp_day) %>% 
summarise(nr = n() + as.integer(runif(1, 1, 99))) %>% 
pad() %>% 
fill_by_function(nr, na.approx) 
しかし、私は次のようなエラーになっています:私はこれを実現する最良の方法は padr::fill_by_function()zoo::na.approx()を使用することだろうと思ったこれを固定起動する方法に

Error in inds[i] <- which(colnames_x == as.character(cols[[i]])) : 
    replacement has length zero 

任意のアイデア?

+0

誰かが#padrタグを追加することができれば、私はそれを感謝します。 – Dan

答えて

1

あなただけna.approxを行うためにmutateが必要:

library(tibble);library(zoo) 
emergency <- as_tibble(read.table(text="time_stamp_day nr 
1  2015-12-12 79 
2  2015-12-13 42 
3  2015-12-14 NA 
4  2015-12-15 NA 
5  2015-12-16 NA 
6  2015-12-17 NA 
7  2015-12-18 88 
8  2015-12-19 NA 
9  2015-12-20 NA 
10  2015-12-21 NA",header=TRUE,stringsAsFactors=FALSE)) 

emergency %>% mutate(nr=na.approx(nr,na.rm =FALSE)) 

# A tibble: 10 × 2 
    time_stamp_day nr 
      <chr> <dbl> 
1  2015-12-12 79.0 
2  2015-12-13 42.0 
3  2015-12-14 51.2 
4  2015-12-15 60.4 
5  2015-12-16 69.6 
6  2015-12-17 78.8 
7  2015-12-18 88.0 
8  2015-12-19 NA 
9  2015-12-20 NA 
10  2015-12-21 NA 
+0

ありがとう@P - もちろん意味があります。私は新しい変数を作成していますが、私はmutateを使用する必要があります。 – Dan

関連する問題