如何在 R 中的一行上方和下方对数据进行子集化?

How to subset data above and below a line in R?

我有一个包含 x 和 y 值的数据框。

我有一条定义了斜率和截距的自定义线。 不是回归。

如何从线上方的数据框中取子集值?

我想在数据框中创建一个新列,其中包含一个表示“线上”和“线下”的分类变量。

可重现的例子:

set.seed(12)
x<-runif(100,min=1,max=700)
y<-runif(100,min=1,max=350)
df<-data.frame(x,y)

ggplot(df, aes(x=x,y=y)) +
  geom_point() +
  geom_abline(aes(intercept=187.835,slope=-0.309), color="red")

创建 ifelse 语句:

df <- df %>% 
  mutate(new = ifelse(y > 187.185 - 0.309*x, "above", "below"))

df %>%
  ggplot(aes(x=x,y=y,color = new)) +
  geom_point() +
  geom_abline(aes(intercept=187.835,slope=-0.309), color="red")

您还可以使用 filter 进行过滤:

df %>%
  filter(new == "above")