问题标签 [data.table]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
950 浏览

r - 使用 by-operator 拆分 data.table:返回数值和/或 NA 的函数失败

我有data.table两列:一ID列和一value列。我想按列拆分表并在列上ID运行一个函数。只要不返回 NA,它就可以正常工作。在这种情况下,我收到一个错误,告诉我组的类型不一致。我的假设是 - 因为equals和equals ,内部假设我想将逻辑值与数字值组合并返回错误。但是,我发现这种行为很奇怪。对此有何评论?我是否错过了一些明显的东西,或者这确实是预期的行为?如果是这样,简短的解释会很棒。(请注意,我确实知道一种解决方法:让foovaluefoois.logical(NA)TRUEis.numeric(NA)FALSEdata.tablefoo2返回一个完整的不可能的数字并稍后过滤。但是,这似乎是糟糕的编码)。

这是示例:

0 投票
4 回答
8690 浏览

r - 我在 data.table 中复制行的方式有效吗?

我有一个月度数据data.table和另一个年度数据data.table,现在我想将年度数据与月度数据中的相应观察值相匹配。

我的方法如下:复制每个月的年度数据,然后加入月度和年度数据。现在我有一个关于行重复的问题。我知道该怎么做,但我不确定这是否是最好的方法,所以一些意见会很棒。

这是data.table DT我的年度数据以及我目前如何复制的示例:

最后一次加入正是我想要的。但是,DT[, list(MONTH=startMonth:endMonth), by="ID"]除了将其他列添加到之外,我已经做了我想要的一切DT,所以我想知道我是否可以摆脱代码中的最后三行,即setkeyandjoin操作。事实证明,您可以,只需执行以下操作:

但是,这仅有效,因为我将列名硬编码到list表达式中。在我的真实数据中,我事先不知道所有列的名称,所以我想知道是否可以告诉我data.table返回MONTH我计算的列,如上所示以及DT. .SD似乎能够做到这一点,但是:

总而言之,我知道它是如何完成的,但我只是想知道这是否是最好的方法,因为我仍然在为语法而苦苦挣扎,data.table并且经常在帖子和维基上阅读做事的好方法和坏方法。另外,我不太明白为什么在使用.SD. 我认为这是告诉data.table您想要所有列的任何简单方法。我想念什么?

0 投票
2 回答
1172 浏览

r - How to match two data.frames with an inexact matching identifier (one identifier has to be in the range of the other)

I have the following matching problem: I have two data.frames, one with an observation every month (per company ID), and one with an observation every quarter (per company ID; note that quarter means fiscal quarter; therefore 1Q = Jan, Feb, Mar is not necessarily correct and also, a fiscal quarter is not necessarily 3 month long).

For every month and company, I want to get the correct value of that quarter. Consequently, several months have the same value for one quarter. As an example see the code below:

Note: This question was posted on R-help months ago, but I didn't get any answer then and found a solution myself (see R-help). Now, however, I posted a question on stackoverflow where I have a question regarding the data.table where this problem was mentioned as well and there, Andrie asked me to post this question again because he apparently has a good solution for it (see Question on SO)

UPDATE: See Matthew Dowle's comment: how does the real data look?

This data is a more realistic one. I added a few rows, but the only main part that changed is column endMonth in qtrData. More precisely, the startMonth is not necessarily the endMonth of the previous quarter plus one month anymore. Therefore, using the roll option, I think that you need another line of code (if not, you get 20 rows back, but with Andrie's solution, which is the desired one, you get 17 rows back). Then there is no performance difference anymore, if I don't miss anything here.

0 投票
1 回答
2872 浏览

r - data.table 包中的 := (pass by reference) 运算符同时修改另一个数据表对象

在测试我的代码时,我发现了以下内容:如果我将 data.table 分配DT1DT并在DT之后进行DT1更改,则随之更改。因此DTDT1似乎是内部联系的。这是预期的行为吗?尽管我不是编程专家,但这对我来说似乎是错误的,并且使用简单的 R 变量或 a 对其进行测试data.frame,但我无法重现该行为。这里发生了什么事?

0 投票
3 回答
2719 浏览

r - 运行长度的累积总和。这个循环可以向量化吗?

我有一个数据框,我在其上计算特定列的运行长度编码。列的值为dir-1、0 或 1。

dir.rle <- rle(df$dir)

然后,我获取运行长度并计算数据框中另一列的分段累积总和。我正在使用 for 循环,但我觉得应该有一种方法可以更智能地做到这一点。

的运行长度dir定义每次运行的开始s和结束e。上面的代码有效,但感觉不像是惯用的 R 代码。我觉得好像应该有另一种没有循环的方法。

0 投票
7 回答
83891 浏览

r - 按多列分组并对其他多列求和

我有一个包含大约 200 列的数据框,其中我想将表按前 10 个左右分组,这些是因子并对其余列求和。

我有我想要分组的所有列名的列表以及我想要聚合的所有列的列表。

我正在寻找的输出格式需要是具有相同列数的相同数据帧,只是组合在一起。

是否有使用 packages 或任何其他解决data.table方案plyr

0 投票
1 回答
1371 浏览

r - data.table 函数可以动态操作日期和时间列吗?

我已经开始使用 data.table。确实,它非常快且语法非常好。我在约会方面遇到了麻烦。我喜欢使用润滑脂。在我的许多数据集中,我都有日期或日期和时间,并使用 lubridate 来操纵它们。Lubridate 将瞬间存储为 POSIX 类。我在这里看到了创建新变量的答案,例如只是为了获得年份,例如。2005. 我不喜欢那样。有时我会按年分析,有时按季度分析,有时按月分析,有时按持续时间分析。我想做一些简单的事情,比如这样

那应该给我在给定年份遇到的患者数量。by 函数不起作用。

你能指出我在哪里使用 data.tables 和日期以及这些日期的操作和分类是在哪里进行的小插曲。

0 投票
3 回答
14308 浏览

r - 遍历 data.table 中的列并转换这些列

我有一个 data.table DT,其中包含一个名为的列RF和许多带有下划线_的列。我想用下划线遍历所有这些列并RF从中减去该列。但是,我被困住了。似乎 a 中:=运算符的 RHS 上的所有内容data.table都不适用于动态变量。

这是我DT的和所需的输出(硬编码):

但是,我希望这更灵活,即遍历名称中带有“_”的每一列并减去RF

任何提示如何做到这一点都会很棒。

编辑:我一发布这个问题,我就在想:你为什么首先与:=运营商合作,果然,我刚刚意识到我不必这样做。这确实有效并且不需要循环:

对此感到抱歉。但是,我保留这个问题是因为我仍然对为什么我与:=操作员的方法不起作用感兴趣。所以也许有人可以在那里帮助我。

0 投票
4 回答
845 浏览

r - 我使用 plyr 对吗?我似乎使用了太多的内存

我有以下有点大的数据集:

不做任何事情,R 进程似乎需要大约 1GB 的 RAM。

我正在尝试运行以下代码:

运行该代码,RAM 使用量猛增。它完全饱和了 60GB 的 RAM,在 32 核机器上运行。我究竟做错了什么?

0 投票
2 回答
179 浏览

r - 检查存储在 data.table 中的参差不齐的面板中是否缺少项目

我有一个大数据集

dt键为 的 data.table在哪里tic。我正在尝试为每组我有多少丢失的条目进行衡量。这些组是时间序列,并且 dt 包含一个date列,它是一个 R 日期,以及一个book_lev列,我感兴趣的变量。

到目前为止,这是我的代码:

我的想法是创建这个 data.fullness 值,如果时间序列中没有漏洞,它应该等于 1。我意识到我的book_lev专栏中可能有一些 NA,所以我想进一步限制。另外,总的来说,我是 data.tables 的新手,我想看看是否有更好的方法来编写我刚刚写的内容。

可以使用 R 的load命令加载的数据的小样本可在此处获得:http ://econsteve.com/r/dt_sample.Robj