首页 > 解决方案 > 基于两个不同列中的两个条件的子集数据框 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

标签: r

解决方案


您可以先使用'base' c1

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


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

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


希望这可以帮助 :-)


推荐阅读