我有一个数据集如下。如果取消为“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/