2017-08-17 56 views
0

我现在已经在为r的数据帧称为DDS_LS。目前,每条线都是按交易处理的,但我需要由Customer_ID汇总的交易。什么导致此sqldf错误 - 需要按Customer_ID分组?

sqldf("SELECT Customer_ID, count(distinct Lifestyle), count(distinct Price_Point), 
     cumsum(Delivered_Sales), cumsum(QTY_sold) 
     FROM DDS_LS GROUP BY Customer_ID") 

然后我得到以下错误:

Error in rsqlite_send_query([email protected], statement) : 
    external pointer is not valid 

是什么原因造成的?

+2

你可以做一个重复的例子? –

+1

我能够通过鼓励'sqldf'坚持SQLite的连接和手动关闭它重现的行为(如果不是根本原因)。也就是'library(sqldf); sqldf(); getOption(“sqldf.connection”);'显示连接处于活动状态。如果我用'dbDisconnect(getOption(“sqldf.connection”))'关闭它并尝试调用'sqldf',它会失败。这是我可以使用'sqldf'重现这个错误的唯一方法,但是你似乎也不可能在不知不觉中这样做。一个可重复的例子(来自新鲜的R实例)在这里非常重要。 – r2evans

回答

0

您正在尝试使用cumsum,这不存在sqldf。您可以在此处看到支持的聚合功能列表:https://sqlite.org/lang_aggfunc.html

如果您想获得累积总和,我建议将您的代码移动到dplyr

library(tidyverse) 
DDS_LS %>% 
    group_by(Customer_ID) %>% 
    summarise(count(distinct(Lifestyle)), 
      count(distinct(Price_Point)), 
      cumsum(Delivered_Sales), 
      cumsum(QTY_sold)) 
+1

提供的错误与此答案不符。如果只是这样,错误会读取'没有这样的功能:cumsum'(我刚刚检查过)。相反,它说“外部指针是无效的”,表明完全是其他的东西。 – r2evans

+0

我也遇到了麻烦,再现具有一些演示数据集的确切的错误,但我决定,要'cumsum'无效呼叫意味着代码不管是什么,所以我建议另一种注定。 –

相关问题