2017-06-18 8 views
0

データフレームにパディング(padrパッケージ)を使用して時間間隔を埋めました。ここで、指定した列のセットのギャップ値を埋めるために、私はfill_by_functionを使用しています。一般的に、fill_by_functionは、引用符で囲まれていない列名を引数として取ります。しかし、私の場合は、列名のリストが提供されています。padrのfill_by_functionに引用符で囲まれていない列リストを渡す

私の質問は、fill_by_function機能内の列リストをどのように渡すことができるかです。列のリストはあらかじめ定義されていないので、fill_by_functionの列名をハードコードすることはできません。

私が試した例ですが、エラーが発生しました。

x <- seq(as.Date('2016-01-01'), by = 'day', length.out = 366) 
x <- x[sample(1:366, 200)] %>% sort 
x.df <- data.frame(x = x, 
       y1 = runif(200, 10, 20) %>% round, 
       y2 = runif(200, 1, 50) %>% round, 
       y3 = runif(200, 20, 40) %>% round) 

c.list <- c("y1","y2") 
x.df %>% pad %>% fill_by_function(as.name(c.list),fun=mean) 

後、私は

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

を得たエラーメッセージです私はこれが私のために働いた

答えて

0

を使用することができ、他の代替機能があります:

x.df %>% pad %>% fill_by_function(.cols=c.list,fun=mean) %>% tail(.) 

      x  y1 y2 y3 
361 2016-12-26 14.725 24.31 30.09 
362 2016-12-27 14.000 28.00 21.00 
363 2016-12-28 14.725 24.31 30.09 
364 2016-12-29 15.000 47.00 22.00 
365 2016-12-30 14.000 43.00 34.00 
366 2016-12-31 17.000 14.00 21.00 

は、と比較:

x.df %>% pad %>% fill_by_function(y1,fun=mean) %>% tail(.) 

      x  y1 y2 y3 
361 2016-12-26 14.725 NA NA 
362 2016-12-27 14.000 28 21 
363 2016-12-28 14.725 NA NA 
364 2016-12-29 15.000 47 22 
365 2016-12-30 14.000 43 34 
366 2016-12-31 17.000 14 21 

出力が実際に必要なものであることを確認します。

+0

これは実際に私に 'cols [[i]]:subscript out of bounds'エラーを与えています。また、あなたの出力から、解決策はすべてのカラムに 'mean'関数を適用したようです。 – user2129946

+0

私は明らかにエラーが出ません。パッケージ 'padr'と' dplyr'を更新してみてください??? (わからない) – CPak

+0

2番目のコメントに関して、あなたの投稿は、あなたが期待していたものに対処していませんでした...私は単にあなたが要求した通りに複数の列名を渡しました – CPak

関連する問題