平均气温在R

mrzz3bfm  于 4个月前  发布在  其他
关注(0)|答案(1)|浏览(41)

我有一个数据集,我收集了整个夏天,我收集了空气温度和不同蛇的内部温度,大约每隔2小时一次,看起来像这样:(https://i.stack.imgur.com/1bQzK.png
在R代码中:

dput(Temps)
structure(list(Date = structure(c(1687651200, 1687651200, 1687651200, 
1687651200, 1687651200, 1687737600, 1687737600, 1687737600, 1687737600, 
1687824000, 1687824000, 1687824000, 1687824000, 1688169600, 1688169600, 
1688169600, 1688169600, 1688688000, 1688688000, 1688688000, 1688688000, 
1688774400, 1688774400, 1688774400, 1688860800, 1688860800, 1688860800, 
1688860800, 1688947200, 1688947200, 1688947200, 1688947200), class = c("POSIXct", 
"POSIXt"), tzone = "UTC"), Time = structure(c(-2209038660, -2209034580, 
-2209027380, -2209020540, -2209013940, -2209034820, -2209027800, 
-2209021020, -2209013940, -2209035000, -2209028220, -2209021200, 
-2209014000, -2209031700, -2209026360, -2209019340, -2209013040, 
-2209031700, -2209026480, -2209018800, -2209012980, -2209024740, 
-2209018680, -2209013340, -2209032720, -2209027380, -2209019100, 
-2209013580, -2209034520, -2209027440, -2209020000, -2209013520
), class = c("POSIXct", "POSIXt"), tzone = "UTC"), `Air Temp` = c(22, 
23, 21, 18, 19, 18, 19, 20, 19, 17, 19, 19, 19, 17, 16, 18, 17, 
22, 23, 24, 24, 22, 21, 18, 21, 21, 20, 20, 16, 16, 19, 19), 
    `Snake Temp` = c(27, 30.5, 27, 27, 21.5, 27, 30.5, 30.5, 
    27, 30.5, 30.5, 30.5, 30.5, 21.5, 21.5, 21.5, 21.5, 30.5, 
    30.5, 30.5, 30.5, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 
    27)), class = c("tbl_df", "tbl", "data.frame"), row.names = c(NA, 
-32L))

字符串
我想做一个图表,显示一天中蛇和空气的平均温度,用误差线作为多边形
我的主管已经向我展示了他想要的图表来比较它们,但我没有运气制作任何类似的东西。
x1c 0d1x的数据
如有任何帮助,我们将不胜感激。
先谢谢你了!

rt4zxlrg

rt4zxlrg1#

这是一个非常基本的方法,旨在让你开始。除此之外,由于数据置信区间cp. ?ggplot2::geom_smooth(参见se-argument)的数量很小,在我看来似乎不合适。我无法识别多条蛇。
我们首先修复您的日期时间数据并将其降到最近的小时。然后,我们切换到长格式,创建组(AirSnake),并计算不同Times的平均值。

方法

library(dplyr, warn.conflicts = FALSE)
library(ggplot2)
library(lubridate, warn.conflicts = FALSE)

df |>
  mutate(Datetime = floor_date(as.POSIXct(paste(
    format(Date, "%Y-%m-%d"), format(Time, "%H:%M:%S")), tz = "UTC"), unit = "hour"),
    Time = format(Datetime, "%H:%M:%S")) |>
  tidyr::pivot_longer(cols = c(`Air Temp`, `Snake Temp`),
                      names_to = "Group", 
                      values_to = "Temp") |>
  mutate(Group = gsub("Temp", "", Group)) |>
  reframe(mTemp = mean(Temp, na.rm = TRUE), .by = c(Time, Group)) |>
  ggplot(aes(y = mTemp, x = Time, group = Group)) +
  geom_line(aes(colour = Group)) + # alternatively:
  # geom_smooth(aes(colour = Group), 
  #            method = 'loess', formula = y ~ x, se = TRUE) + 
  labs(y = "Mean Temperature [°C]",
       x = "",
       colour = "Temperature of") +
  theme_classic()

字符串
x1c 0d1x的数据

编辑根据@LTyrone的评论:

rib = 
  df |>
  mutate(Datetime = floor_date(as.POSIXct(paste(
    format(Date, "%Y-%m-%d"), format(Time, "%H:%M:%S")), tz = "UTC"), unit = "hour"),
    Time = format(Datetime, "%H:%M:%S")) |>
  tidyr::pivot_longer(cols = c(`Air Temp`, `Snake Temp`),
                      names_to = "Group", 
                      values_to = "Temp") |>
  mutate(Group = trimws(gsub("Temp", "", Group))) |>
  reframe(mTemp = mean(Temp, na.rm = TRUE),
          maxT = max(Temp, na.rm = TRUE),
          minT = min(Temp, na.rm = TRUE), 
          .by = c(Time, Group))

rib |>
  ggplot(aes(y = mTemp, x = Time, group = Group, fill = Group,
             ymin = minT, ymax = maxT)) +
  geom_line() + 
  geom_ribbon(alpha = .5) +
  labs(y = "min/max/mean temp [°C]",
       x = "time") +
  theme_classic()



创建于2023-12-14使用reprex v2.0.2

数据

df = structure(list(Date = structure(c(1687651200, 1687651200, 1687651200, 
                                       1687651200, 1687651200, 1687737600, 1687737600, 1687737600, 1687737600, 
                                       1687824000, 1687824000, 1687824000, 1687824000, 1688169600, 1688169600, 
                                       1688169600, 1688169600, 1688688000, 1688688000, 1688688000, 1688688000, 
                                       1688774400, 1688774400, 1688774400, 1688860800, 1688860800, 1688860800, 
                                       1688860800, 1688947200, 1688947200, 1688947200, 1688947200), class = c("POSIXct", 
                                                                                                              "POSIXt"), tzone = "UTC"), Time = structure(c(-2209038660, -2209034580, 
                                                                                                                                                            -2209027380, -2209020540, -2209013940, -2209034820, -2209027800, 
                                                                                                                                                            -2209021020, -2209013940, -2209035000, -2209028220, -2209021200, 
                                                                                                                                                            -2209014000, -2209031700, -2209026360, -2209019340, -2209013040, 
                                                                                                                                                            -2209031700, -2209026480, -2209018800, -2209012980, -2209024740, 
                                                                                                                                                            -2209018680, -2209013340, -2209032720, -2209027380, -2209019100, 
                                                                                                                                                            -2209013580, -2209034520, -2209027440, -2209020000, -2209013520
                                                                                                              ), class = c("POSIXct", "POSIXt"), tzone = "UTC"), `Air Temp` = c(22, 
                                                                                                                                                                                23, 21, 18, 19, 18, 19, 20, 19, 17, 19, 19, 19, 17, 16, 18, 17, 
                                                                                                                                                                                22, 23, 24, 24, 22, 21, 18, 21, 21, 20, 20, 16, 16, 19, 19), 
                    `Snake Temp` = c(27, 30.5, 27, 27, 21.5, 27, 30.5, 30.5, 
                                     27, 30.5, 30.5, 30.5, 30.5, 21.5, 21.5, 21.5, 21.5, 30.5, 
                                     30.5, 30.5, 30.5, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 
                                     27)), class = c("tbl_df", "tbl", "data.frame"), row.names = c(NA, 
                                                                                                   -32L))

相关问题