首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在总结数据时获取“未使用的参数”

在总结数据时获取“未使用的参数”
EN

Stack Overflow用户
提问于 2019-09-18 02:01:23
回答 1查看 1.2K关注 0票数 1

我对R中的编程一无所知/zip/nada,但是我们被要求运行一些代码来总结数据框架(数据表?不确定行话)。我在一条特定的行上被抛出一个错误,我的googling没有教我足够的关于R语法的知识,让我找出它。

我正在使用RStudio v1.2.1335完成R代码,R版本是R x64 3.6.1

一个dataframe是创建的,它包含了一组列,并且有大约4年的不同节点的每小时半小时的数据。作为一个非常简化的演示程序,没有所有列,如下所示:

代码语言:javascript
运行
复制
datetime        node   year   load, generation, deltaSS ...
1/1/2014 00:00, ABC,   2014,   100,  50,          300    ...
1/1/2014 00:00, XYZ,   2014,   200,  150,         500    ...
1/1/2014 00:30, ABC,   2014,   125,  70,          355    ...
1/1/2014 00:30, ABC,   2014,   220,  150,         25     ...
:
1/1/2015 00:00, ABC,   2015,   200,  20,          200    ...
1/1/2015 00:00, XYZ,   2015,   400,  450,         400    ...
:

我认为代码试图为特定分组总结这些列的子集。有些列需要简单的求和,另一些则需要求和/2才能转换成不同的单元。分组按年份和节点进行。

换句话说,对于每个年份和节点,汇总(或sum/2)表中某些列的值。类似于:

代码语言:javascript
运行
复制
node   year   load, generation, deltaSS ...
ABC,   2014,   1000,  5000,     30000    ...
XYZ,   2014,   2000,  15000,    50000    ...
ABC,   2014,   1250,  7000,     35500    ...
ABC,   2014,   2200,  15000,    2500     ...
:
ABC,   2015,   2000,  2000,     20000    ...
XYZ,   2015,   4000,  45000,    40000    ...
:

我得到的错误是:

[.data.frame**(dff,中的错误,.(generationMWh =sum(生成)/2,loadMWh = sum(load,:未使用的参数) (by =.(模型年,节点))**

奇怪的是,我们得到了一个错误,因为很明显,这段代码已经运行并工作了(我只提到这一点,以防它是库版本或其他什么的)。

引发错误的代码是:

代码语言:javascript
运行
复制
df <- dff[,.(generationMWh = sum(generation)/2, 
                 loadMWh = sum(load,na.rm = TRUE)/2,
                 deltaSS = sum(deltaSS,na.rm = TRUE), 
                 pos_deltaSS = sum(pos_deltaSS,na.rm = TRUE), 
                 neg_deltaSS = sum(neg_deltaSS,na.rm = TRUE), 
                 deltaCS = sum(deltaCS,na.rm = TRUE),
                 pos_deltaCS = sum(pos_deltaCS,na.rm = TRUE),
                 neg_deltaCS = sum(neg_deltaCS,na.rm = TRUE)
    ), by = .(modelyear,node)]

有人能帮我一下吗?也许,如果问题不是很明显,那么还能有另一种方法来编写按分组汇总特定列的R代码吗?

事先谢谢安迪C

编辑--我后来发现,如果在运行总结代码之前将data.frame转换为data.table,则可以让这些代码工作:

代码语言:javascript
运行
复制
dff <- as.data.table(dff)

这段代码以前是否成功运行现在还存在疑问,但至少我们可以向前迈进。

EN

回答 1

Stack Overflow用户

发布于 2019-09-19 06:42:34

您自己找到了解决方案,但是为了您的理解,让我解释一下这个错误消息意味着什么。

您的错误是试图在data.table (基本R)上使用data.frame (来自library(data.table))代码。尽管共享类似的属性,但这两个对象是不同的。值得注意的是,data.table提供了一个通过引用来执行操作的接口,而不是复制庞大的数据结构,因此它很可能更快。

正如您所理解的,您需要在一个data.table上运行您的代码,也就是说,您必须在某个地方转换它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57984051

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档