簡體   English   中英

聚合() Function 在 R 與總和

[英]aggregate() Function in R with sum

我是 R 的初學者。 我正在嘗試在 R 腳本(在 Spotfire 內)中編寫代碼,以按日期計算我的數據表中各列的總和。

如上所述,我的數據表列出了在給定日期記錄的各種產品的體積,即不同井的石油、天然氣和水。 我的目標是使用 R 中的聚合 function 來按日期匯總所有井的油、氣和水。

過去,我使用下面的腳本取得了成功,該腳本在特定日期取所有井的每種產品的平均值。

NORMALIZED.PRODUCTS.=data.frame(aggregate(x[,c("OIL","GAS","WATER")],by=list(x[,"T"]),FUN=mean))

當我嘗試將上面腳本中的 function 更改為 Sum function 時,出現錯誤。

NORMALIZED.PRODUCTS.=data.frame(aggregate(x[,c("OIL","GAS","WATER")],by=list(x[,"T"]),FUN=sum))

然后我在別處讀到,也許我需要包括na.rm = TRUE , na.action = NULL)來幫助解決問題,但我仍然收到以下錯誤。

Could not execute function call.
TIBCO Enterprise Runtime for R returned an error: 'Error in aggregate.data.frame(x[, c("OIL","GAS", "WATER"  : no rows to aggregate
    eval(expr, envir, enclos)
    eval(expr, envir, enclos)
    data.frame(aggregate(x[, c("OIL","GAS", "WATER")],
    aggregate(x[, c("OIL","GAS", "WATER"],
    aggregate.data.frame(x[, c("OIL","GAS", "WATER")],
    stop("no rows to aggregate")'.
   at Spotfire.Dxp.Data.DataFunctions.Executors.LocalFunctionClient.OnExecuting()
   at Spotfire.Dxp.Data.DataFunctions.Executors.AbstractFunctionClient.<RunFunction>d__31.MoveNext()
   at Spotfire.Dxp.Data.DataFunctions.Executors.SPlusFunctionExecutor.<ExecuteFunction>d__12.MoveNext()
   at Spotfire.Dxp.Data.DataFunctions.DataFunctionExecutorService.<ExecuteFunction>d__3.MoveNext()


這是我的數據表

WELL                          T         OIL GAS WATER 
FILLMORE E4 24-25 3H LWS    10/11/2019  0   0   0
FILLMORE E4 24-25 3H LWS    10/12/2019  197 66  308
FILLMORE E4 24-25 3H LWS    10/13/2019  70  125 1095
FILLMORE E4 24-25 3H LWS    10/14/2019  79  1,211   881
FILLMORE E4 24-25 3H LWS    10/15/2019  0   0   0
FILLMORE E4 24-25 4H LWS    10/11/2019  0   0   0
FILLMORE E4 24-25 4H LWS    10/12/2019  276 90  374
FILLMORE E4 24-25 4H LWS    10/13/2019  47  93  1061
FILLMORE E4 24-25 4H LWS    10/14/2019  53  890 902
FILLMORE E4 24-25 4H LWS    10/15/2019  0   0   0
FILLMORE E4 25-24 1H LWS    10/11/2019  296 262 964
FILLMORE E4 25-24 1H LWS    10/12/2019  465 1,408   1343
FILLMORE E4 25-24 1H LWS    10/13/2019  -690    3,957   1267
FILLMORE E4 25-24 1H LWS    10/14/2019  81  2,093   1133
FILLMORE E4 25-24 1H LWS    10/15/2019  0   0   0

我覺得為 Spotfire 編寫解決方案非常尷尬,但它就是這樣。

如果您將表命名為“x”,則只需將數據表傳遞到帶有輸入參數的數據 function 並按原樣使用您的代碼。 假設 5 列的列類型為 String、Date、Integer、Integer、Integer。 在此處輸入圖像描述

output 參數稱為“NORMALIZED.PRODUCTS”。 您還需要運行 function 並按照提示正確返回數據表。

如果數據表未命名為“x”,則包括:

x<-yourdatatablename NORMALIZED.PRODUCTS.=data.frame(aggregate(x[,c("OIL","GAS","WATER")],by=list(x[,"T"]),FUN=sum))

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM