- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个大型 data.table(约 5000 万行),其中包含多个对行进行分组的 ID 列(ID1、ID2)。我想根据不等式滚动条件移动值列,我将在下面概述。什么是滚动条件?我只是编造了这个词。这意味着条件也发生了变化(滚动)。
> require(data.table)
> DT = data.table(ID1 = c(rep(1,7), rep(2,4)), ID2 = c('A','B','B','C','C','A','A','D','D','E','D'), Value = (1:11))
输出:如果最后一行的 ID2 与该行的 ID2 不同,则返回具有相同 ID1 的最后一行的值(因此分组依据 = ID1)。
> DT
ID1 ID2 Value desired_output
1: 1 A 1 NA -- no previous row with the same ID1 and different ID2
2: 1 B 2 1 -- last row with same ID1 and different ID2 is row 1, so desired_output is the Value of row 1
3: 1 B 3 1 -- last row with same ID1 and different ID2 is row 1, so desired_output is the Value of row 1
4: 1 C 4 3 -- last row with same ID1 and different ID2 is row 3, so desired_output is the Value of row 3
5: 1 C 5 3 -- last row with same ID1 and different ID2 is row 3, so desired_output is the Value of row 3
6: 1 A 6 5 -- last row with same ID1 and different ID2 is row 5, so desired_output is the Value of row 5
7: 1 A 7 5 -- last row with same ID1 and different ID2 is row 5, so desired_output is the Value of row 5
8: 2 D 8 NA -- no previous row with the same ID1 and different ID2
9: 2 D 9 NA -- no previous row with the same ID1 and different ID2
10: 2 E 10 9 -- last row with same ID1 and different ID2 is row 9, so desired_output is the Value of row 9
11: 2 D 11 10 -- last row with same ID1 and different ID2 is row 10, so desired_output is the Value of row 10
正在寻找一种计算效率高的方法来执行此操作。
最佳答案
这是一种方法:
DT[, rleid_id2 := rleid(ID2), by = .(ID1)]
DT[DT, on = .(ID1, rleid_id2 > rleid_id2), val := i.Value]
> DT
ID1 ID2 Value rleid_id2 val
1: 1 A 1 1 NA
2: 1 B 2 2 1
3: 1 B 3 2 1
4: 1 C 4 3 3
5: 1 C 5 3 3
6: 1 A 6 4 5
7: 1 A 7 4 5
8: 2 D 8 1 NA
9: 2 D 9 1 NA
10: 2 E 10 2 9
11: 2 D 11 3 10
使用 rleid
我们可以将 ID2
的序列变成一个编号的 id,它在每次更改时递增,并按 ID1 分组。然后,我们在 rleid_id2
(加上 ID1)上使用非相等条件将 DT 加入自身,以便我们也提取具有相同 ID1 但较低 rleid_id2
值的值。
关于基于data.table R中列的不等式*滚动*条件的滚动值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67934122/
所以我正在为“石头剪刀布蜥蜴 Spock”制作一个 Javascript 程序,并且使用 Math.random()。我需要使用if/else/else if's。有人可以帮我解决不平等问题吗?我
我们正在使用一个代码分析器,它具有这样的规则“不检查浮点相等性/不等性”。下面是给出的示例。 float f = 0.100000001f; // 0.1 double d = 0.100000000
我们正在使用一个代码分析器,它具有这样的规则“不检查浮点相等性/不等性”。下面是给出的示例。 float f = 0.100000001f; // 0.1 double d = 0.100000000
C++20 为我们提供了飞船操作符,甚至允许我们 default它,使用默认语义生成所有比较,这将从我们的代码库中删除很多样板,太棒了! 但是平等和不平等呢? C++20 是否也为我们提供了一种方式
我今天在写一些 Python 时意识到可以将不等运算符写成 a!=b 或 not a==b。这让我很好奇: 这两种方式的行为是否完全相同,还是存在一些细微差别? 是否有理由使用一个而不是另一个?一种比
假设我们有几个线性不等式,比如 2x-5y=0 ,我们如何绘制这两个不等式?为了扩展这一点,如果我们有多个这样的不等式,我们如何尝试以图形方式解决这个问题? 最佳答案 你可以试试ImplicitEqu
为什么以下简化 不起作用,或者如何解决: >>> x = Symbol('x', real=True) >>> y = Symbol('y', real=True) >>> simplify(x -
已关闭。这个问题是 not reproducible or was caused by typos 。目前不接受答案。 这个问题是由拼写错误或无法再重现的问题引起的。虽然类似的问题可能是 on-top
这个问题在这里已经有了答案: Draw 3d Inequality on Matlab (1 个回答) matlab - plot inequality in 3d with surf (1 个回答
考虑使用这两个表和以下查询: SELECT Product. * FROM Product WHERE EXISTS ( SELECT * FROM Codes
我在笔记本界面中使用 Mathematica 7,我想重新排列一个不等式,以便在一侧获得某个变量。例如。 FullSimplify[x^3+L+r>3x^3+2r] 给 L > r + 2 x^3 但
我是一名优秀的程序员,十分优秀!