私は次のデータフレームを持っています:
x y z
1 a c 0
2 a c 0
3 a c 1
4 a c 0
5 a c 0
6 b c 0
7 b c 0
8 b c 0
9 b c 1
10 b c 0
11 b c 0
12 b c 0
13 a d 0
14 a d 0
15 a d 0
列zの前の行に1があり、列xとyに同じ値がある行を削除したいと思います。たとえば、行10の場合、行1:9で、x = "b"、y = "c"、zが1に等しい行を検索します。そのような行が行1:9に存在する場合は、行10を削除します。
したがって、結果のデータフレームは行4、5、10、11、および12を削除します。
x y z
1 a c 0
2 a c 0
3 a c 1
4 b c 0
5 b c 0
6 b c 0
7 b c 1
8 a d 0
9 a d 0
10 a d 0
私たちはこれを行うことができます data.table
library(data.table)
setDT(df1)[-df1[, .I[cummin(c(0, diff(z==1)))<0], .(x, y)]$V1]
# x y z
# 1: a c 0
# 2: a c 0
# 3: a c 1
# 4: b c 0
# 5: b c 0
# 6: b c 0
# 7: b c 1
# 8: a d 0
# 9: a d 0
#10: a d 0
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加