在不循环的情况下删除 R Dataframe 中多次运行的行

标签 r dataframe

我正在使用一个测量进入和退出的数据框。有时,在退出标准发生之前多次满足进入标准,反之亦然。我想删除这些实例。例如,在数据中,第 1 行有一个条目,第 2 行有另一个条目,第 2 行的那个需要出来,因为我们已经“在”了。类似地,第 6 行和第 7 行需要出现,因为我们已经“退出”并且没有其他条目。此外,值得一提的是,没有事先进入就不能退出。

我知道我可以用 for 循环来做到这一点,但我想尽可能避免这种情况。我已经尝试使用 cumsum 来过滤“In”+“Out”的总和为 0 或 1,其他任何东西都必须去。这种方法行不通。

初始数据框:

   In Out
1   1   0
2   1   0
3   0  -1
4   1   0
5   0  -1
6   0  -1
7   0  -1
8   1   0
9   0  -1
10  0  -1

期望的输出:

   In Out
1   1   0
3   0  -1
4   1   0
5   0  -1
8   1   0
9   0  -1

创建初始数据框的代码:

temp <- structure(list(In = c(1, 1, 0, 1, 0, 0, 0, 1, 0, 0), Out = c(0, 
0, -1, 0, -1, -1, -1, 0, -1, -1)), .Names = c("In", "Out"), row.names = c(NA, 
10L), class = "data.frame")

感谢您的帮助。

最佳答案

这是另一种解决方案:

temp[c(TRUE,temp$In[-length(temp$In)]!=temp$In[-1]),]

关于在不循环的情况下删除 R Dataframe 中多次运行的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31211457/

相关文章:

r - 如何根据geom_point让geom_linerange闪避位置

r - 将列添加到 R 中数据帧的数据帧列表中的特定行

r - 基于数据框和向量之间的部分匹配来过滤行

r - 使用 `across()` 创建具有多个其他列的函数的新列

python - 使用 Pandas 数据框中的部分数据滚动标准差

r - dev.hold、dev.flush 和调整窗口大小

regex - 在 stringr 中拆分一个大写跟随小写的字符串

python - 无论如何,排除 H2O 中的截距(python 和 R)都会产生非零截距系数

python - Pandas DataFrame df.loc 是 View 还是新的 DataFrame 对象?

python - 在独立运行的 python 脚本之间共享 python 对象(例如 Pandas Dataframe)