如何按两个变量的范围进行子集化?

How do I subset by the ranges of two variables?

我有两个连续变量 Light 和 Temperature,我正在研究这些变量的光合作用速率。

我正在寻找 split/subset 我的数据到小范围的光和温度,然后我将根据这些绘制光合作用。

我想知道如何将我的数据拆分为这些光照和温度范围组合。例如,我想要以下内容:

数据集 1:(光照 >100 & <200)&(温度 >15 且 <20)

数据集 2:(光照 >100 & <200)&(温度 >20 且 <25)

...等每个光照范围和每个温度范围将继续。

我想说明我只对按温度和光照对数据进行子集化感兴趣。 这是因为我将通过另一个测量变量(光合作用)绘制该数据集中的数据。我不想绘制光或温度本身。

我的结果:计算这些不同微气候范围内两种处理(环境 CO2 和升高的 CO2)的平均光合作用。

到目前为止我已经尝试过: 子集() %在范围内% %之间%

感谢任何帮助。

通过使用基本函数 cut 和 ggplot 函数 facet_wrap,您可以做您需要的,而且可以灵活地尝试多种安排,而不会增加多个数据框。

library(tidyverse)
df <- expand.grid(light = seq(100,300, by = 25),
                 temperature = seq(15,25, by = 2))

df_cat <- df %>%
  mutate(light.level = cut(light, 
                           breaks = c(100,200,300), 
                           include.lowest = T, 
                           labels = c("dim", "bright")),
         temperature.level = cut(temperature, 
                                 breaks = c(15,20,25), 
                                 include.lowest = T, 
                                 labels = c("cool", "warm")))

ggplot(df_cat, aes(x = light, y = temperature, colour = temperature.level, shape = light.level)) +
  geom_point() +
  facet_wrap(~temperature.level + light.level)