【发布时间】:2025-12-14 03:25:01
【问题描述】:
我是 R 的初学者。我正在尝试用 R 脚本(在 Spotfire 中)编写代码来计算数据表中各列的总和。
如上所述,我的数据表列出了在给定日期记录的各种产品的产量,即不同油井的石油、天然气和水。我的目标是使用 R 中的 Aggregate 函数按日期汇总所有井的石油、天然气和水。
过去,我使用以下脚本取得了成功,该脚本采用特定日期所有井的每种产品的平均值。
NORMALIZED.PRODUCTS.=data.frame(aggregate(x[,c("OIL","GAS","WATER")],by=list(x[,"T"]),FUN=mean))
当我尝试将上面脚本中的函数更改为 Sum 函数时,出现错误。
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
【问题讨论】:
-
您遇到了什么错误?尝试在您的帖子中提供您实际数据的玩具样本,否则根据您的描述没有人可以帮助您。
-
感谢您使用示例数据进行编辑。数据中的
,可能会导致问题。但是最重要的问题是你会收到什么错误信息? -
用于处理逗号,see this FAQ。
-
我能够在 spotfire 中加载 csv 并获得 sum 和 mean 函数以使用上面的代码。如果将数据加载到 R 中,数字列将转换为带有逗号的因子。 Spotfire 可以避免这种情况 - 如果您通过使用文件选项添加数据表加载数据。