[英]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.