2017-08-17 49 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'無效呼叫意味着代碼不管是什麼,所以我建議另一種註定。 –