r - 有没有办法删除数据集中符号相反的对?

标签 r dplyr

我有一个数据集如下。如果取消为“Y”,则美元为负,反之亦然。
从数据中,我想删除相同 id 中具有相同美元数量但不同符号(当然应该有不同符号的取消值)的对。

df

rownumber id1    cancel      dollar 
    1       1      Y          -50     
    2       1      N           10     
    3       1      N           50     
    4       2      N           14.4     
    5       2      Y          -23.5     
    6       2      N           23.5     
    7       3      Y          -15.5     
    8       3      N           15.5   
    9       4      Y           -20.5

因此,这是我想要的输出。

df_desired

rownumber id1    cancel      dollar 
    2       1      N           10     
    4       2      N           14.4     
    9       4      Y           -20.5

可能,我可以使用 for 循环来完成,但数据太大而无法完成。
有什么简单的方法吗?

最佳答案

既然你有一个负号 iff cancel = Y,为什么不简单地将绝对值存储在 dollar 中呢?然后,您可以只获取具有唯一值的行,用于取消 + 美元。过滤后,您可以根据需要添加回负号。

如果出于某种原因这不是一个选项,如果您有足够的内存来从您的数据构建哈希集,您仍然可以在 O(2) 时间内完成它:对于每一行,插入 dollar成一个哈希集。然后再次迭代并过滤掉哈希集包含 -dollar 的所有值。

关于r - 有没有办法删除数据集中符号相反的对?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40643986/

相关文章:

删除 sankey 网络中的 "unused"节点

r - 如何不从 R 中的数据中选择观察结果

r - ggplot2::position_stack 中的距离是如何缩放的?

r - 如何让 R 停止接受列名的部分匹配?

r - 将地理点分配给由 R tidyverse-method 中的多边形定义的组

r - 安装失败: Bad credentials (401) travis ci with R

R中数据的行比较

R:将相似地址组合在一起

r - 根据条件汇总行

r - 使用 dplyr 进行 eval 解析的替代方法