gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 10:08:41 26 4
gpt4 key购买 nike

我正在使用一个测量进入和退出的数据框。有时,在退出标准发生之前多次满足进入标准,反之亦然。我想删除这些实例。例如,在数据中,第 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com