如何让 R 将我的变量识别为 POSIXct,以便将我的 x 轴分解为区间?

How can I get R to recognize my variable as POSIXct so that it breaks up my x-axis into intervals?

提问人:Sien Smania 提问时间:11/13/2023 最后编辑:Sien Smania 更新时间:11/13/2023 访问量:48

问:

我正在尝试根据以下代码中的分组获得 60 分钟内的平均温度group_by(类型、降雨量、日期时间)。我已经这样做了,但是,当我尝试绘制它时,我的图表显然没有将我的新“间隔”变量识别为 POSIXct 格式,即使我试图重新格式化它并检查其类以确保(这返回:“POSIXct”“POSIXt”)。我不确定这里的问题是它以某种方式同时存在于 POSIXct 和 POSIXt 中,还是其他原因,但对此事的任何帮助都会很棒!我的最终目标是在我的 x 轴上没有一百万个日期时间标签。我尝试使用 scale_x_datetime 在我的 x 轴上添加中断,但同样,由于它不会将我的间隔识别为日期时间,它给了我一个错误,说它不在 POSIXct 中。

df_Temps1 <- df_Temps1 %>% 
  mutate(interval = cut(datetime, breaks = "60 min"))

# calculate mean values for line graphs 
df_Temps1.means <- df_Temps1 %>% 
  group_by(Type, Rainfall, interval) %>% 
  summarise(Temp_mean=mean(temperature, na.rm=TRUE), n=n(), sd=sd(temperature, na.rm=TRUE), se=sd/sqrt(n))
df_Temps1.means$se<-as.numeric(df_Temps1.means$se)
df_Temps1.means$Temp_mean<-as.numeric(df_Temps1.means$Temp_mean)
df_Temps1.means

df_Temps1$interval <- as.POSIXct(df_Temps1$interval, format = "%m/%d/%y %H:%M")
class(df_Temps1$interval)

enter image description here

p1 <- ggplot(df_Temps1.means, aes(x=interval, y=Temp_mean, color=Type)) + 
  aes(group=Type) +
  geom_errorbar(aes(ymin=Temp_mean-se, ymax=Temp_mean+se), width=0.1) +
  geom_line(aes(color=Type, linetype=Type), linewidth=1) +
  geom_point(size=0.5) +
  xlab("Time") + 
  ylab("Temperature (ºC)") +
  scale_color_manual(values = my_colors) +
  theme_bw() +
  theme(text = element_text(size = 15)) +
  theme(panel.grid.major = element_blank()) +
  theme(panel.grid.minor = element_blank()) +
  scale_y_continuous(expand=c(0,0)) +
  theme(axis.text.x = element_text(angle = 45, hjust=1), axis.title.x = element_text(vjust=-1), legend.position="top",
        legend.text = element_text(size=12), legend.title = element_blank(), legend.key.size = unit(1, 'cm'),
        legend.background = element_rect(size = 0.5, linetype = "solid", colour = "black")) +
  facet_grid(~Rainfall) 
p1

以下是我的数据片段:

structure(list(Type = c("", "Brown SAPE", "Brown SAPE", "Brown SAPE", 
"Brown SAPE", "Brown SAPE", "Brown SAPE", "Brown SAPE", "Brown SAPE", 
"Brown SAPE", "Brown SAPE", "Brown SAPE", "Brown SAPE", "Brown SAPE", 
"Brown SAPE", "Brown SAPE", "Brown SAPE", "Brown SAPE", "Brown SAPE", 
"Brown SAPE", "Brown SAPE", "Brown SAPE", "Brown SAPE", "Brown SAPE", 
"Brown SAPE", "Brown SAPE", "Brown SAPE", "Brown SAPE", "Brown SAPE", 
"Brown SAPE", "Brown SAPE", "Brown SAPE", "Brown SAPE", "Brown SAPE", 
"Brown SAPE", "Brown SAPE", "Brown SAPE", "Brown SAPE", "Brown SAPE", 
"Brown SAPE", "Brown STSA", "Brown STSA", "Brown STSA", "Brown STSA", 
"Brown STSA", "Brown STSA", "Brown STSA", "Brown STSA", "Brown STSA", 
"Brown STSA", "Brown STSA", "Brown STSA", "Brown STSA", "Brown STSA", 
"Brown STSA", "Brown STSA", "Brown STSA", "Brown STSA", "Brown STSA", 
"Brown STSA", "Brown STSA", "Brown STSA", "Brown STSA", "Brown STSA", 
"Brown STSA", "Brown STSA", "Brown STSA", "Brown STSA", "Brown STSA", 
"Brown STSA", "Brown STSA", "Brown STSA", "Brown STSA", "Brown STSA", 
"Brown STSA", "Brown STSA", "Brown STSA", "Brown STSA", "Brown STSA", 
"Green SAPE", "Green SAPE", "Green SAPE", "Green SAPE", "Green SAPE", 
"Green SAPE", "Green SAPE", "Green SAPE", "Green SAPE", "Green SAPE", 
"Green SAPE", "Green SAPE", "Green SAPE", "Green SAPE", "Green SAPE", 
"Green SAPE", "Green SAPE", "Green SAPE", "Green SAPE", "Green SAPE", 
"Green SAPE", "Green SAPE", "Green SAPE", "Green SAPE", "Green SAPE", 
"Green SAPE", "Green SAPE", "Green SAPE", "Green SAPE", "Green SAPE", 
"Green SAPE", "Green SAPE", "Green SAPE", "Green SAPE", "Green SAPE", 
"Green SAPE", "Green SAPE", "Green SAPE", "Green SAPE", "Green STSA", 
"Green STSA", "Green STSA", "Green STSA", "Green STSA", "Green STSA", 
"Green STSA", "Green STSA", "Green STSA", "Green STSA", "Green STSA", 
"Green STSA", "Green STSA", "Green STSA", "Green STSA", "Green STSA", 
"Green STSA", "Green STSA", "Green STSA", "Green STSA", "Green STSA", 
"Green STSA", "Green STSA", "Green STSA", "Green STSA", "Green STSA", 
"Green STSA", "Green STSA", "Green STSA", "Green STSA", "Green STSA", 
"Green STSA", "Green STSA", "Green STSA", "Green STSA", "Green STSA", 
"Green STSA", "Green STSA", "Green STSA"), Rainfall = c(NA, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0), interval = structure(c(NA, 1L, 2L, 3L, 
4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L, 13L, 14L, 15L, 16L, 17L, 
18L, 19L, 20L, 21L, 22L, 23L, 24L, 25L, 26L, 27L, 28L, 29L, 30L, 
31L, 32L, 33L, 34L, 35L, 36L, 37L, 38L, 39L, 1L, 2L, 3L, 4L, 
5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L, 13L, 14L, 15L, 16L, 17L, 18L, 
19L, 20L, 21L, 22L, 23L, 24L, 25L, 26L, 27L, 28L, 29L, 30L, 31L, 
32L, 33L, 34L, 35L, 36L, 37L, 38L, 39L, 1L, 2L, 3L, 4L, 5L, 6L, 
7L, 8L, 9L, 10L, 11L, 12L, 13L, 14L, 15L, 16L, 17L, 18L, 19L, 
20L, 21L, 22L, 23L, 24L, 25L, 26L, 27L, 28L, 29L, 30L, 31L, 32L, 
33L, 34L, 35L, 36L, 37L, 38L, 39L, 1L, 2L, 3L, 4L, 5L, 6L, 7L, 
8L, 9L, 10L, 11L, 12L, 13L, 14L, 15L, 16L, 17L, 18L, 19L, 20L, 
21L, 22L, 23L, 24L, 25L, 26L, 27L, 28L, 29L, 30L, 31L, 32L, 33L, 
34L, 35L, 36L, 37L, 38L, 39L), levels = c("2022-07-24 11:00:00", 
"2022-07-24 12:00:00", "2022-07-24 13:00:00", "2022-07-24 14:00:00", 
"2022-07-24 15:00:00", "2022-07-24 16:00:00", "2022-07-24 17:00:00", 
"2022-07-24 18:00:00", "2022-07-24 19:00:00", "2022-07-24 20:00:00", 
"2022-07-24 21:00:00", "2022-07-24 22:00:00", "2022-07-24 23:00:00", 
"2022-07-25 00:00:00", "2022-07-25 01:00:00", "2022-07-25 02:00:00", 
"2022-07-25 03:00:00", "2022-07-25 04:00:00", "2022-07-25 05:00:00", 
"2022-07-25 06:00:00", "2022-07-25 07:00:00", "2022-07-25 08:00:00", 
"2022-07-25 09:00:00", "2022-07-25 10:00:00", "2022-07-25 11:00:00", 
"2022-07-25 12:00:00", "2022-07-25 13:00:00", "2022-07-25 14:00:00", 
"2022-07-25 15:00:00", "2022-07-25 16:00:00", "2022-07-25 17:00:00", 
"2022-07-25 18:00:00", "2022-07-25 19:00:00", "2022-07-25 20:00:00", 
"2022-07-25 21:00:00", "2022-07-25 22:00:00", "2022-07-25 23:00:00", 
"2022-07-26 00:00:00", "2022-07-26 01:00:00"), class = "factor"), 
    Temp_mean = c(NaN, 31.9333333333333, 39.85, 42.1166666666667, 
    41.95, 38.1166666666667, 35.9333333333333, 30.7, 24.1666666666667, 
    20, 17.6166666666667, 15.8, 14.45, 13.75, 13.2, 12.5, 11.85, 
    11.0166666666667, 10.15, 10, 9.88333333333333, 9.5, 12.4, 
    21.5, 31.4833333333333, 37.6166666666667, 38.7166666666667, 
    39.2666666666667, 38.8333333333333, 36.45, 32.4166666666667, 
    26.3166666666667, 19.95, 16.3666666666667, 14.3333333333333, 
    12.4333333333333, 11.5333333333333, 12.2, 11.7666666666667, 
    11.15, 32.2333333333333, 35.2333333333333, 37.45, 38.0666666666667, 
    37.7666666666667, 35.5, 31.4666666666667, 26, 22.0666666666667, 
    19.6666666666667, 17.75, 16.45, 15.4666666666667, 14.7166666666667, 
    13.9, 13.1833333333333, 12.35, 11.5666666666667, 11, 10.85, 
    10.4833333333333, 12.1166666666667, 17.95, 25.3166666666667, 
    31.1833333333333, 33.9166666666667, 34.8833333333333, 35.05, 
    34.6333333333333, 32.3166666666667, 27.5833333333333, 22.1, 
    18.4666666666667, 16.45, 14.45, 13.05, 13.4833333333333, 
    13.0666666666667, 12.462962962963, 29.7, 32.5833333333333, 
    35.0166666666667, 36.6, 35.8166666666667, 34.15, 30.6833333333333, 
    25.2666666666667, 21.5, 19.2, 17.6333333333333, 16.4, 15.5166666666667, 
    14.8833333333333, 14.15, 13.45, 12.6833333333333, 11.8, 11.35, 
    11.15, 10.75, 11.6166666666667, 15.5833333333333, 21.5, 27.0333333333333, 
    30.8333333333333, 32.4333333333333, 32.9, 32.3166666666667, 
    30.7666666666667, 26.8833333333333, 21.4166666666667, 17.9333333333333, 
    16.1333333333333, 14.2, 12.95, 13.7, 13.6166666666667, 12.8793103448276, 
    31.9333333333333, 39.85, 42.1166666666667, 41.95, 38.1166666666667, 
    35.9333333333333, 30.7, 24.1666666666667, 20, 17.6166666666667, 
    15.8, 14.45, 13.75, 13.2, 12.5, 11.85, 11.0166666666667, 
    10.15, 10, 9.88333333333333, 9.5, 12.4, 21.5, 31.4833333333333, 
    37.6166666666667, 38.7166666666667, 39.2666666666667, 38.8333333333333, 
    36.45, 32.4166666666667, 26.3166666666667, 19.95, 16.3666666666667, 
    14.3333333333333, 12.4333333333333, 11.5333333333333, 12.2, 
    11.7666666666667, 11.15), n = c(32691L, 30L, 30L, 30L, 30L, 
    30L, 30L, 30L, 30L, 30L, 30L, 30L, 30L, 30L, 30L, 30L, 30L, 
    30L, 30L, 30L, 30L, 30L, 30L, 30L, 30L, 30L, 30L, 30L, 30L, 
    30L, 30L, 30L, 30L, 30L, 30L, 30L, 30L, 30L, 30L, 30L, 30L, 
    30L, 30L, 30L, 30L, 30L, 30L, 30L, 30L, 30L, 30L, 30L, 30L, 
    30L, 30L, 30L, 30L, 30L, 30L, 30L, 30L, 30L, 30L, 30L, 30L, 
    30L, 30L, 30L, 30L, 30L, 30L, 30L, 30L, 30L, 30L, 30L, 30L, 
    30L, 27L, 30L, 30L, 30L, 30L, 30L, 30L, 30L, 30L, 30L, 30L, 
    30L, 30L, 30L, 30L, 30L, 30L, 30L, 30L, 30L, 30L, 30L, 30L, 
    30L, 30L, 30L, 30L, 30L, 30L, 30L, 30L, 30L, 30L, 30L, 30L, 
    30L, 30L, 30L, 30L, 29L, 30L, 30L, 30L, 30L, 30L, 30L, 30L, 
    30L, 30L, 30L, 30L, 30L, 30L, 30L, 30L, 30L, 30L, 30L, 30L, 
    30L, 30L, 30L, 30L, 30L, 30L, 30L, 30L, 30L, 30L, 30L, 30L, 
    30L, 30L, 30L, 30L, 30L, 30L, 30L, 30L), sd = c(NA, 1.55215830452272, 
    0.57460631200249, 0.816672531060342, 0.355983339400925, 0.897153864992658, 
    1.26445663219924, 1.92801488046912, 1.54436312804482, 0.964901281354015, 
    0.552163976977188, 0.501721175485981, 0.379427881476018, 
    0.254273813857804, 0.310727733132933, 0, 0.351106624928903, 
    0.359197701142069, 0.2330457998497, 0, 0.339455276962181, 
    0.227429413073671, 2.19482149144534, 3.01719211782446, 2.72752045200251, 
    1.17944561299917, 0.284160388577968, 0.314405112414928, 0.479463301485384, 
    1.06956323667251, 1.4388892587168, 1.90951940755157, 1.60468065358812, 
    0.706293547126578, 0.530668630505232, 0.626062315579293, 
    0.668675135459372, 0.24913643956122, 0.285673231861683, 0.2330457998497, 
    1.59597194110097, 0.504006932993731, 0.577599073454219, 0.17287295182088, 
    0.552944053622771, 0.919145030018058, 1.47352107817163, 1.420296229422, 
    0.935260735665815, 0.530668630505232, 0.521106250334738, 
    0.379427881476018, 0.34574590364176, 0.284160388577968, 0.203419051086243, 
    0.278026708383768, 0.297981716634219, 0.217086242727652, 
    0, 0.2330457998497, 0.0912870929175277, 1.39384937922073, 
    1.94470988883281, 2.20689879669426, 1.45319703041102, 0.437140657023559, 
    0.215091533576038, 0.201288949968224, 0.392457626382451, 
    0.960274146679795, 1.57613305348846, 1.55585656638792, 0.69398068806149, 
    0.577599073454219, 0.634496813937274, 0.422431385981284, 
    0.0912870929175277, 0.34072269373053, 0.133440128170906, 
    1.33649051495015, 0.542715606819131, 0.759801849546783, 0.275430697209874, 
    0.675728640359648, 0.70893314698676, 1.39261186842995, 1.41867673490507, 
    0.919145030018058, 0.518618855462641, 0.434172485455305, 
    0.357192114829753, 0.334337567729686, 0.215091533576038, 
    0.2330457998497, 0.379427881476018, 0.307473949929189, 0.24913643956122, 
    0.2330457998497, 0.2330457998497, 0.254273813857804, 0.795280619886978, 
    1.5147739864036, 1.78112711312344, 1.67606545286837, 0.647719252365604, 
    0.365148371670111, 0.203419051086243, 0.463928749979424, 
    0.653021271942343, 1.51818479029111, 1.54854399541864, 0.626062315579293, 
    0.524130368971462, 0.624223655762735, 0.273861278752583, 
    0.24913643956122, 0.215091533576038, 0.255481772266812, 1.55215830452272, 
    0.57460631200249, 0.816672531060342, 0.355983339400925, 0.897153864992658, 
    1.26445663219924, 1.92801488046912, 1.54436312804482, 0.964901281354015, 
    0.552163976977188, 0.501721175485981, 0.379427881476018, 
    0.254273813857804, 0.310727733132933, 0, 0.351106624928903, 
    0.359197701142069, 0.2330457998497, 0, 0.339455276962181, 
    0.227429413073671, 2.19482149144534, 3.01719211782446, 2.72752045200251, 
    1.17944561299917, 0.284160388577968, 0.314405112414928, 0.479463301485384, 
    1.06956323667251, 1.4388892587168, 1.90951940755157, 1.60468065358812, 
    0.706293547126578, 0.530668630505232, 0.626062315579293, 
    0.668675135459372, 0.24913643956122, 0.285673231861683, 0.2330457998497
    ), se = c(NA, 0.283384038735356, 0.104908279589538, 0.149103322452196, 
    0.0649933683619682, 0.163797136469808, 0.230857140147512, 
    0.352005747079521, 0.281960840736462, 0.176166065854411, 
    0.100810888544056, 0.0916013351305599, 0.0692737365436039, 
    0.046423834544263, 0.0567308628931175, 0, 0.0641030061876887, 
    0.0655802278398368, 0.0425481471698382, 0, 0.0619757708187835, 
    0.04152273992687, 0.400717746853915, 0.550861394419748, 0.49797482587282, 
    0.215336322530051, 0.0518803515911954, 0.0574022574215346, 
    0.0875376219064817, 0.19527463713459, 0.262704034917026, 
    0.348628951169965, 0.292973263854116, 0.128950969327188, 
    0.0968863931626966, 0.114302817548899, 0.12208281844464, 
    0.0454858826147342, 0.0521565577220158, 0.0425481471698382, 
    0.291383277762103, 0.0920186554465537, 0.105454680574986, 
    0.0315621384316, 0.100953310402513, 0.167812155519884, 0.269026911157979, 
    0.25930942773132, 0.170754467357681, 0.0968863931626966, 
    0.0951405493884234, 0.0692737365436039, 0.0631242768631999, 
    0.0518803515911954, 0.0371390676354104, 0.0507604999235668, 
    0.0544037693082247, 0.0396343440219923, 0, 0.0425481471698382, 
    0.0166666666666667, 0.254480915587923, 0.355053824639032, 
    0.402922751026818, 0.265316264685212, 0.0798105995514774, 
    0.0392701616226586, 0.0367501661580418, 0.0716526316115342, 
    0.175321270508516, 0.287761209008375, 0.2840592458844, 0.126702959108078, 
    0.105454680574986, 0.115842739219534, 0.077125066366707, 
    0.0166666666666667, 0.0622071684033784, 0.0256805646400569, 
    0.244008667643298, 0.0990858600549809, 0.138720204076973, 
    0.0502865352970744, 0.123370606359092, 0.129432892122591, 
    0.254254978062833, 0.259013749838428, 0.167812155519884, 
    0.0946864152947999, 0.0792686880439847, 0.0652140595517438, 
    0.0610414092223201, 0.0392701616226586, 0.0425481471698382, 
    0.0692737365436039, 0.0561368060738103, 0.0454858826147342, 
    0.0425481471698382, 0.0425481471698382, 0.046423834544263, 
    0.145197711686263, 0.276558627291759, 0.325187832547255, 
    0.306006285463706, 0.118256815150341, 0.0666666666666667, 
    0.0371390676354104, 0.0847014138129684, 0.119224827057846, 
    0.277181352034564, 0.282724159193322, 0.114302817548899, 
    0.0956926753863919, 0.113967125729863, 0.05, 0.0454858826147342, 
    0.0392701616226586, 0.0474417740991582, 0.283384038735356, 
    0.104908279589538, 0.149103322452196, 0.0649933683619682, 
    0.163797136469808, 0.230857140147512, 0.352005747079521, 
    0.281960840736462, 0.176166065854411, 0.100810888544056, 
    0.0916013351305599, 0.0692737365436039, 0.046423834544263, 
    0.0567308628931175, 0, 0.0641030061876887, 0.0655802278398368, 
    0.0425481471698382, 0, 0.0619757708187835, 0.04152273992687, 
    0.400717746853915, 0.550861394419748, 0.49797482587282, 0.215336322530051, 
    0.0518803515911954, 0.0574022574215346, 0.0875376219064817, 
    0.19527463713459, 0.262704034917026, 0.348628951169965, 0.292973263854116, 
    0.128950969327188, 0.0968863931626966, 0.114302817548899, 
    0.12208281844464, 0.0454858826147342, 0.0521565577220158, 
    0.0425481471698382)), row.names = c(NA, -157L), groups = structure(list(
    Type = c("", "Brown SAPE", "Brown STSA", "Green SAPE", "Green STSA"
    ), Rainfall = c(NA, 0, 0, 0, 0), .rows = structure(list(1L, 
        2:40, 41:79, 80:118, 119:157), ptype = integer(0), class = c("vctrs_list_of", 
    "vctrs_vctr", "list"))), class = c("tbl_df", "tbl", "data.frame"
), row.names = c(NA, -5L), .drop = TRUE), class = c("grouped_df", 
"tbl_df", "tbl", "data.frame"))
r 日期时间 ggplot2 posixct

评论

0赞 mikeck 11/13/2023
将输出添加到您的问题中,以便我们可以使用它。我的猜测是,您的各种调用的交互方式出了问题,也许您对离散 x 值的使用出了问题。dput(df_Temps1.means)aes()geom_errorbar()
0赞 Sien Smania 11/13/2023
@mikeck我的数据太多了,无法粘贴到框中,所以我只是放了一段来玩它!:)
0赞 mikeck 11/13/2023
是的,看起来不是.看起来您也忘记了您的数据,这也可能导致 .我会先尝试让它只处理线条,然后再处理误差线。intervalfactorPOSIXctungroupggplot
0赞 Sien Smania 11/13/2023
@mikeck好吧,所以我使用了这个功能。但是至于将间隔转换为,我已经尝试过像上面的代码一样这样做。在图中使用它之前,我使用该函数检查了它,它返回了 .我不确定如何让它不再像你所说的那样。ungroup()POSIXctclass()"POSIXct, POSIXt"factor
0赞 mikeck 11/13/2023
我怀疑你混淆了,当你强制间隔到 POSIXct 时。df_Temps1df_Temps1.mean

答: 暂无答案