【发布时间】:2021-04-16 15:18:07
【问题描述】:
我确实有一个带有 ID、value1、value2 和 value3 的 df,如下所示:
ID val1 val2 val3
01 100.5 7.31 1000
02 100.0 7.33 100
03 100.1 10.40 500
04 105.3 7.28 100
05 100.4 7.30 500
val1 和 val2 有范围,让我们假设以下范围:val1=0.5 和 val=0.1
ID val1 val2 val3
01 100.5±0.5 7.31±0.1 1000
02 100.0±0.5 7.33±0.1 100
03 100.1±0.5 10.40±0.1 500
04 105.3±0.5 7.28±0.1 100
05 100.4 ±0.5 7.30±0.1 500
我想总结在 val1 范围和 val2 范围内重叠的行。只有当这两个条件为真时,才会发生 val3 的总和。最后,该表应仅包含 ID 较低的行和汇总的 val3。在我的示例中,这仅适用于第一行、第二行和最后一行。此外,所有不满足这两个标准的行都应该保留。这是我正在寻找的结果:
ID val1 val2 val3
01 100.5 7.31 1600
03 100.1 10.40 500
04 105.3 7.28 100
到目前为止,我尝试使用 distinct 函数来实现这一点。但是,这并没有考虑到我的范围和总结。
sum_up <- distinct(df, val1, val2, .keep_all = TRUE)
【问题讨论】:
-
请注意,您要求 both 条件为真,并且这只发生在 ID 01 中。但是,对于您的预期输出,如果只有第一个条件 (val1) 为真。您能否更新您的问题以澄清?
-
99.8(第 3 行)不与 100 行(2)重叠吗?还是每行只重叠一次?
-
@JakobGepp:你说得对,99.8 与 row(2) 中的 100.0 重叠,但 val2 不重叠。我只想总结满足我的两个条件的行。
-
@BenNorris:我试图澄清我的问题,因此我添加了满足这两个条件的 row(5)。只有同时满足这两个条件的行才应合并,所有其他行应保留。
-
是具有最低 ID 的行作为参考还是最近的行?假设 A 行与 B 行重叠,B 行与 D 行重叠,但 A 行与 D 行不重叠。您是否将这三个加在一起,因为 B 行是一个公共链接?还是 D 行开始了新的分组?
标签: r duplicates range