如何通过两个变量的范围子集?

时间:2019-04-03 09:49:59

标签: r ggplot2 subset between

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

我希望将数据拆分/细分为小范围的光和温度,然后将其针对光合作用进行绘制。

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

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

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

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

我想指定我仅对按温度和光照对数据的子集感兴趣。 这是因为我将通过另一个测量变量(光合作用)在该数据集中绘制数据。我不打算绘制光线或温度本身。

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

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

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

使用基本函数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)

Facet wrap based on cuts in light and temperature values