首页 > 解决方案 > 特定数据集子集

问题描述

我有一个数据集:

x   y
j   5
k   2
b   9
b   1
k   1
g   8
h   2
k   4

我想在 x 列及其上方的行中提取值为 k 的行,因此所需的输出是:

x   y
j   5
k   2
b   1
k   1
h   2
k   4

我怎么能那样做?我知道如何在 x 列中提取值为 k 的行:

df[df$x=="k",]

,但是如何在它上面提取一行呢?

标签: rdataframe

解决方案


which您可以使用+尝试下面的代码sort

indk <- which(df$x=="k")
df[sort(c(indk-1,indk)),]

这使

  x y
1 j 5
2 k 2
4 b 1
5 k 1
7 h 2
8 k 4

数据

> dput(df)
structure(list(x = c("j", "k", "b", "b", "k", "g", "h", "k"), 
    y = c(5L, 2L, 9L, 1L, 1L, 8L, 2L, 4L)), class = "data.frame", row.names = c(NA,
-8L))

推荐阅读