【发布时间】:2019-07-11 15:59:06
【问题描述】:
我正在使用 R 并且有一个如下所示的数据表。每行的 var1 和 var2 的值是上下文相关的(按 var1 升序排列),而 var3 是每组 var3 的累计总数(按 g1、g2、g3)。 var4 是一个变量,分成十分之一堆叠(数据中每组有 10 行)。
问题
编辑:对于 var4 的每个值,我需要根据所有 var3 的最小值计算 var1 的最小值,即 >= 每个 var4强>?
我有数百万行此类数据,因此性能很重要
任何帮助将不胜感激
老问题:对于每一行:如果组的 var4 var3,则应返回所有 var1 的最小值.如果 var4 > 所有 var 3 的最小值,则从具有最大值 var3 的行中的最小值 var1应该返回 var4。
g1(char) g2(POSIXct) g3(int) var1(num) var2(num) var3(num) var4(num)
A 01/01/2019 04:30:00 -30 -100 1661 1661 280
A 01/01/2019 04:30:00 -30 0 0 1661 560
A 01/01/2019 04:30:00 -30 57 720 2381 840
A 01/01/2019 04:30:00 -30 59 0 2381 1120
A 01/01/2019 04:30:00 -30 70 0 2381 1400
A 01/01/2019 04:30:00 -30 77 0 2381 1680
A 01/01/2019 04:30:00 -30 91 80 2461 1960
A 01/01/2019 04:30:00 -30 93 0 2461 2240
A 01/01/2019 04:30:00 -30 95 0 2461 2520
A 01/01/2019 04:30:00 -30 99 340 2801 2800
一组的预期结果如下所示:
g1(char) g2(POSIXct) g3(int) var1 var2 var3 var4 var5
A 01/01/2019 04:30:00 -30 -100 1661 1661 280 -100
A 01/01/2019 04:30:00 -30 0 0 1661 560 -100
A 01/01/2019 04:30:00 -30 57 720 2381 840 -100
A 01/01/2019 04:30:00 -30 59 0 2381 1120 -100
A 01/01/2019 04:30:00 -30 70 0 2381 1400 -100
A 01/01/2019 04:30:00 -30 77 0 2381 1680 57
A 01/01/2019 04:30:00 -30 91 80 2461 1960 57
A 01/01/2019 04:30:00 -30 93 0 2461 2240 57
A 01/01/2019 04:30:00 -30 95 0 2461 2520 99
A 01/01/2019 04:30:00 -30 99 340 2801 2800 99
【问题讨论】:
-
请创建一个可重现的最小示例。
-
OP已经提供了一个例子,也告诉我们它的预期输出。
-
在您的专栏中,g2 被截断。您介意填写详细信息以便明确分组吗?
-
此组中所有行的示例日期时间为 01/01/2019 04:30:00。我会尽快更新代码
-
我已更新问题和示例代码以重新澄清问题
标签: r data.table grouping aggregate minimum