基于两个不同列中的两个条件的子集数据帧R

时间:2019-02-14 17:33:39

标签: r

我有一个数据帧(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

1 个答案:

答案 0 :(得分:1)

您可以首先使用来获得“基础” c1

base <- df[which(df$c2), 'c1']


然后再次使用which获取所需的行。

out <- df[which((df$c1 <= base + 40) & (df$c1 >= base - 40)),]


希望这会有所帮助:-)