使用multidplyr添加缺少的行

使用multidplyr添加缺少的行,r,R,我正在尝试将缺少的行添加到以下数据框中 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:

我正在尝试将缺少的行添加到以下数据框中

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")))
但由于我真正的数据帧有150万行,所以需要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"
cluster%
分组依据(KONTR)%>%
do(左联合(数据帧(KONTR=.$KONTR[1],日期=seq(最小(.$DATE)+1,最大(.$DATE)+1,按=“1个月”)-1)。,
by=c(“日期”))
checkForRemoteErrors(Lappy(cl,recvResult))中的错误:
3个节点产生错误;第一个错误:找不到函数“left_join”

我终于找到了解决办法。在从属级别需要库附件,因此我必须在代码中添加以下行:

cluster_eval(cluster,library(dplyr))

我终于找到了解决办法。在从属级别需要库附件,因此我必须在代码中添加以下行:

cluster_eval(cluster,library(dplyr))

另一个选项是提前注册要使用的库

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
命令中写入
package::function
。也就是说,您编写的不是
left\u-join
dplyr::left\u-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")))

另一个选项是提前注册要使用的库

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
命令中写入
package::function
。也就是说,您编写的不是
left\u-join
dplyr::left\u-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")))

请加载
库(dplyr)
dplyr已加载请显示使用的所有软件包。我们不知道哪个包有函数
partition
etc@akrun我只使用dplyr和multidplyr软件包请加载
库(dplyr)
dplyr已加载请显示所有使用的软件包。我们不知道哪个包有函数
partition
etc@akrun我只使用dplyr和multidplyr包