我有一个数据帧(df),如下所示:
c1 c2 c3
100 FALSE a
110 FALSE b
120 FALSE c
130 FALSE d
150 FALSE e
160 FALSE f
170 FALSE g
180 FALSE h
190 TRUE i
200 FALSE l
210 FALSE m
220 FALSE n
230 FALSE o
240 FALSE p
250 FALSE q
260 FALSE r
270 FALSE s
我想选择在c2列中带有“ TRUE”的行之前和之后的一定数量的行。例如,我想让c1中的行的值为190(TRUE的行)减去40或190加40。
预期输出:
150 FALSE e
160 FALSE f
170 FALSE g
180 FALSE h
190 TRUE i
200 FALSE l
210 FALSE m
220 FALSE n
230 FALSE o
答案 0 :(得分:1)
您可以首先使用来获得“基础” c1
base <- df[which(df$c2), 'c1']
然后再次使用which
获取所需的行。
out <- df[which((df$c1 <= base + 40) & (df$c1 >= base - 40)),]
希望这会有所帮助:-)