2017-01-18 22 views
1

次のデータフレームに欠落行を追加しようとしています。multidplyrを使用して欠落行を追加する

df = data.frame(DATE = as.Date(c("2016-05-31", "2016-08-31", "2016-10-31", "2016-07-31", "2016-08-31", "2016-10-31", "2016-12-31")), 
      KONTR = c("122","122","122","553","553","102","102"), 
      KAP = as.double(1:7), 
      DIV =c("PI","PI","PI","OP","OP","PR","PR")) 

このコードは

result = df %>% 
    group_by(KONTR) %>% 
    do(left_join(data.frame(KONTR = .$KONTR[1], DATE = seq(min(.$DATE)+1, max(.$DATE)+1, by="1 month")-1), ., 
      by=c("KONTR", "DATE"))) 

に動作しますが、私の本当のデータフレームは1.5メートルの列を持っているとして、それが完了するまでに15分以上かかります。私は次のコードでmultidplyrを使用しようとしましたが、エラーが発生し、何が間違っているのか分かりません。

cluster <- create_cluster(3) 

by_kontr <- df %>% partition(KONTR,cluster=cluster) 

result = by_kontr %>% 
    group_by(KONTR) %>% 
    do(left_join(data.frame(KONTR = .$KONTR[1], DATE = seq(min(.$DATE)+1, max(.$DATE)+1, by="1 month")-1), ., 
      by=c("KONTR", "DATE"))) 

Error in checkForRemoteErrors(lapply(cl, recvResult)) : 
    3 nodes produced errors; first error: could not find function "left_join" 
+0

を書くleft_joinの ' – akrun

+0

dplyrが使用されているすべてのパッケージを表示してください – Koles

+0

ロードされている'ライブラリ(dplyr)をロードしてください。どのパッケージに 'partition'などの機能があるのか​​分かりません – akrun

答えて

0

最終的に解決策が見つかりました。

cluster_eval(cluster,library(dplyr)) 
0

別のオプションは、内部のpackage::function

multidplyr::cluster_library(cluster, "dplyr") 

by_kontr %>% 
group_by(KONTR) %>% 
do(left_join(data.frame(KONTR = .$KONTR[1], DATE = seq(min(.$DATE)+1, max(.$DATE)+1, by="1 month")-1), ., by=c("KONTR", "DATE"))) 

を使用するか、書き込みしようとしている、事前にライブラリを登録している:私はライン以下の私のコードを追加する必要がありますので、ライブラリ添付ファイルは、スレーブのレベルで必要とされますdoコマンドすなわち、代わりにあなたがdplyr::left_join

by_kontr %>% 
group_by(KONTR) %>% 
do(dplyr::left_join(data.frame(KONTR = .$KONTR[1], DATE = seq(min(.$DATE)+1, max(.$DATE)+1, by="1 month")-1), ., by=c("KONTR", "DATE"))) 
関連する問題