Thanks, the issue might be character-related: Could you do the same thing, but this time, where the code says
delim = '-'
replace the '-' by copying an pasting the hyphen from the console that you see bewteen 2010 and 05 and then rerun the code and screenshot again?
OK, a final try then for the day — note I'm not using read.csv(), but read_csv():
data <- read_csv("fifteenminuteintervaldata.csv")
data |>
separate_wider_delim(
cols = Date,
names = c("year", "month", "day"),
delim = '-',
cols_remove = F) |>
group_by(year, month) |>
summarise(
Precipitation = sum(Precipitation),
Discharge = sum(Discharge)
) |>
dput()
Thank you, here is my output
dput()
`summarise()` has grouped output by 'year'. You can override using the `.groups` argument.
structure(list(year = c("2010", "2010", "2010", "2010", "2010",
"2010", "2011", "2011", "2011", "2011", "2011", "2011", "2012",
"2012", "2012", "2012", "2012", "2012", "2013", "2013", "2013",
"2013", "2013", "2013", "2014", "2014", "2014", "2014", "2014",
"2014", "2015", "2015", "2015", "2015", "2015", "2015", "2016",
"2016", "2016", "2016", "2016", "2016", "2017", "2017", "2017",
"2017", "2017", "2017", "2018", "2018", "2018", "2018", "2018",
"2018", "2019", "2019", "2019", "2019", "2019", "2019", "2020",
"2020", "2020", "2020", "2020", "2020", "2021", "2021", "2021",
"2021", "2021", "2021", "2022", "2022", "2022", "2022", "2022",
"2022", NA), month = c("05", "06", "07", "08", "09", "10", "05",
"06", "07", "08", "09", "10", "05", "06", "07", "08", "09", "10",
"05", "06", "07", "08", "09", "10", "05", "06", "07", "08", "09",
"10", "05", "06", "07", "08", "09", "10", "05", "06", "07", "08",
"09", "10", "05", "06", "07", "08", "09", "10", "05", "06", "07",
"08", "09", "10", "05", "06", "07", "08", "09", "10", "05", "06",
"07", "08", "09", "10", "05", "06", "07", "08", "09", "10", "05",
"06", "07", "08", "09", "10", NA), Precipitation = c(41.6, 63.4,
30.4, 58, 109.2, 38, 4, 62.6, 67.8, 30.8, 39, 34.2, 140.2, 94.6,
51, 104.2, 29.8, 40.2, 142.2, 55.2, 126.6, 50.8, 9.8, 37, 57.2,
109, 22.6, 39.8, 6.6, 14.4, 95.6, 66.8, 34.4, 77.2, 44, 48, 47.8,
102.2, 79.4, 43, 24.2, 0, 72.2, 70, 60.6, 70, 81.4, 36.8, 53.8,
71.2, 77.8, 42.8, 79, 102.4, 43.4, 73, 64.2, 61.4, 100.6, 89.6,
102, 12.2, 5, 81, 49.4, 64.8, 47, 72.6, 12.4, 33.4, 60.4, 50.6,
100.4, 67.4, 52.4, 33, 99.2, 25.2, NA), Discharge = c(1098.165,
913.832, 143.449, 122.327, 628.503, 744.365, 3576.262758593,
1169.660438716, 636.443304331, 89.993293314, 87.987612867, 156.547529614,
3135.631004576, 2642.972454083, 247.869505193, 184.387420593,
72.984364263, 144.809074076, 7140.468275454, 1947.160139933,
3472.148888357, 827.989476767, 1169.288358022, 830.330769324,
7099.102561831, 3781.54435038, 1403.538744855, 477.311791977,
415.568367489, 347.669041685, 2712.445233732, 1453.426870664,
598.906750422, 336.028010752, 684.973451554, 590.387748128, 1969.451711015,
3125.837815424, 1722.36845952, 271.31683909, 503.568190585, 740.808522966,
4398.121089032, 1678.901533343, 1080.74882027, 302.582297029,
1017.53118285, 1286.086914624, 1958.065068929, 939.237816557,
1289.604132466, 163.11710896, 445.258625216, 1813.391561568,
4093.504092264, 2022.328847569, 582.173185702, 286.591893656,
1466.749048724, 3481.635663176, 2094.152961024, 642.646409983,
521.921978323, 363.166217808, 395.686164598, 831.226330386, 2097.401490171,
1233.149951321, 154.346937294, 110.370471482, 196.085973386,
415.034224673, 12515.462389965, 2910.924209312, 770.455482982,
450.402574557, 821.166584692, 503.228680048, 0.275960889)), class = c("grouped_df",
"tbl_df", "tbl", "data.frame"), row.names = c(NA, -79L), groups = structure(list(
year = c("2010", "2011", "2012", "2013", "2014", "2015",
"2016", "2017", "2018", "2019", "2020", "2021", "2022", NA
), .rows = structure(list(1:6, 7:12, 13:18, 19:24, 25:30,
31:36, 37:42, 43:48, 49:54, 55:60, 61:66, 67:72, 73:78,
79L), ptype = integer(0), class = c("vctrs_list_of",
"vctrs_vctr", "list"))), class = c("tbl_df", "tbl", "data.frame"
), row.names = c(NA, -14L), .drop = TRUE))```
There must a bug somewhere to chase down, but this is very helpful. I'll can't continue now, but will post again later.
Ok, thank you so much for your time today. I really appreciate it.
I just wanted to let everyone know, I have adjusted my plot and now have the dates properly labelled. I broke the plot down into 13 separate plots (one for each year between 2010 and 2022).
Here is my working code if anyone is interested
# Step 1: Load the Data
library(readr)
library(dplyr)
library(lubridate)
library(ggplot2)
# Load the data
data <- read_csv("fifteenminuteintervaldata.csv")
# Load the data
data <- read_csv("fifteenminuteintervaldata.csv")
# Remove rows with missing or invalid Date or Time values
clean_data <- data %>%
filter(!is.na(Date) & !is.na(Time))
# Prepare the data
clean_data <- clean_data %>%
mutate(DateTime = ymd_hms(paste(Date, Time)),
Year = year(DateTime),
Month = month(DateTime),
Day = day(DateTime))
# Filter data for May 1 to October 31 for each year
filtered_data <- clean_data %>%
filter(Month >= 5 & Month <= 10)
# Define custom function for date labels
custom_month_labels <- c("M", "J", "J", "A", "S", "O")
# Plotting
ggplot(filtered_data, aes(x = DateTime, y = Discharge, group = Year)) +
geom_line(color = "blue", alpha = 0.6, lwd = 0.01) +
labs(x = "Date", y = "Discharge (m3/s)") +
theme_minimal() +
theme(axis.text = element_text(family = "Times New Roman", size = 12),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
axis.line = element_line(color = "black"),
strip.background = element_blank(),
strip.text.x = element_text(size = 10, face = "bold")) +
scale_x_datetime(date_breaks = "1 month", date_labels = custom_month_labels, expand = c(0, 0)) +
facet_wrap(~ Year, scales = "free_x", nrow = 2)```
Good to see! And it looks like you have the tools to what you originally set out to do, too, so to confirm — I assume you have no need of help with your original question,right? And just one comment:
ggplot() removes NA's automatically, so no need to filter out rows with them.
Yes, I believe that I have everything that I need now and no longer need help with my original question. Thank you so much for your help.
Actually, I do have one quick question. The 13 plots that I have created show discharge as a continuous line graph for each year between 2010 and 2022. I also wish to create a series of 13 bar plots (similar to the plots above, but bar plots) showing precipitation depth. Does anyone have any advice on how to adjust this code to create a similar arrangement of plots, but using a bar plot instead of a line plot?
The easiest tweak to make would be to replace geom_line() with geom_col(); you would just need to remove the lwd argument you used with geom_line().
Great. Thank you so much. That worked.


