用R操作数据表



我有一个数据帧,例如:

X Y

1-0.1

2 0

3-0.2

4-0.4

5 0

6-0.2

我需要R来选择第一个零和第二个零之间的所有行,这样最后的表是:

2 0

3-0.2

4-0.4

5 0

它不适用于子集。有人想办法解决这个问题吗?

提前感谢!

使用which获取Y = 0所在的索引位置,并对数据进行子集设置。

inds <- which(df$Y == 0)
df <- df[inds[1]:inds[2], ]
df
#  X    Y
#2 2  0.0
#3 3 -0.2
#4 4 -0.4
#5 5  0.0

数据

df <- structure(list(X = 1:6, Y = c(-0.1, 0, -0.2, -0.4, 0, -0.2)), 
class = "data.frame", row.names = c(NA, -6L))

我们可以将filtercumsum一起使用

library(dplyr)
df %>% 
filter(lag(cumsum(Y == 0)) < 2)
#   X    Y
#1 2  0.0
#2 3 -0.2
#3 4 -0.4
#4 5  0.0

数据

df <- structure(list(X = 1:6, Y = c(-0.1, 0, -0.2, -0.4, 0, -0.2)), 
class = "data.frame", row.names = c(NA, -6L))

最新更新