I am trying to calculate the average sampling frequency grouped by variable_units and sitename, and I want to use apply function instead of for loop for the calculations.
The first section of the code groups data by variable and site. Then, in the second section, I wrote a for loop to calculate the time difference between the first sampling time and the next sampling time and repeat it over each sampling event. I am not sure how to re-write it using apply and put the output as a new column (time_diff) in the original data frame.
After calculating the time differences, I plan to calculate the mean of these sampling frequencies to get an average time sampled per variable and site.
#First section
data <- data %>%
group_by(variable_units, site_name)
#Second section
test <- data.frame()
for (i in 1:data$valuedatetime) {
diff_time <- difftime(i+1, i, units = "min")
test <- rbind(test, diff_time)
}
Below is my sample data:
structure(list(valuedatetime = structure(c(584830800, 584830860,
588891600, 588891660, 591483600, 994712400, 998514000, 1000846800,
1002747600, 1005166800, 994712400, 998514000, 1000846800, 1002747600,
1005166800, 584830800, 584830860, 588891600, 588891660, 591483600,
994712400, 998514000, 1000846800, 1002747600, 1005166800, 994712400,
998514000, 1000846800, 1002747600, 1005166800, 1041379200, 1041381000,
1041382800, 1041384600, 1041386400, 1050507000, 1050508800, 1050510600,
1050512400, 1050514200), tzone = "UTC", class = c("POSIXct",
"POSIXt")), datavalue = c(90.27497, 87.49935, 85.32486, 109.56417,
112.45021, 101.2, 101.7, 145.4, 86.2, 144, 107.8, 90.2, 117,
121.4, 123.8, 6.82727, 6.41, 6.61, 8.425, 9.89, 8.99, 8.2, 12.48,
7.29, 13.75, 8.4, 6.7, 9.3, 10.6, 12.1, 1, 0.9, 2.1, 1.4, 1.3,
5, 3, 14, 34, 37), variable_units = c("Dissolved Oxygen Saturation_%",
"Dissolved Oxygen Saturation_%", "Dissolved Oxygen Saturation_%",
"Dissolved Oxygen Saturation_%", "Dissolved Oxygen Saturation_%",
"Dissolved Oxygen Saturation_%", "Dissolved Oxygen Saturation_%",
"Dissolved Oxygen Saturation_%", "Dissolved Oxygen Saturation_%",
"Dissolved Oxygen Saturation_%", "Dissolved Oxygen Saturation_%",
"Dissolved Oxygen Saturation_%", "Dissolved Oxygen Saturation_%",
"Dissolved Oxygen Saturation_%", "Dissolved Oxygen Saturation_%",
"Dissolved Oxygen_mg/l", "Dissolved Oxygen_mg/l", "Dissolved Oxygen_mg/l",
"Dissolved Oxygen_mg/l", "Dissolved Oxygen_mg/l", "Dissolved Oxygen_mg/l",
"Dissolved Oxygen_mg/l", "Dissolved Oxygen_mg/l", "Dissolved Oxygen_mg/l",
"Dissolved Oxygen_mg/l", "Dissolved Oxygen_mg/l", "Dissolved Oxygen_mg/l",
"Dissolved Oxygen_mg/l", "Dissolved Oxygen_mg/l", "Dissolved Oxygen_mg/l",
"Turbidity_ntu", "Turbidity_ntu", "Turbidity_ntu", "Turbidity_ntu",
"Turbidity_ntu", "Turbidity_ntu", "Turbidity_ntu", "Turbidity_ntu",
"Turbidity_ntu", "Turbidity_ntu"), sitename = c("GREAT BAY ESTUARY - ADAMS POINT",
"GREAT BAY ESTUARY - ADAMS POINT", "GREAT BAY ESTUARY - ADAMS POINT",
"GREAT BAY ESTUARY - ADAMS POINT", "GREAT BAY ESTUARY - ADAMS POINT",
"GREAT BAY ESTUARY - COASTAL MARINE LABORATORY", "GREAT BAY ESTUARY - COASTAL MARINE LABORATORY",
"GREAT BAY ESTUARY - COASTAL MARINE LABORATORY", "GREAT BAY ESTUARY - COASTAL MARINE LABORATORY",
"GREAT BAY ESTUARY - COASTAL MARINE LABORATORY", "GREAT BAY ESTUARY - GREAT BAY",
"GREAT BAY ESTUARY - GREAT BAY", "GREAT BAY ESTUARY - GREAT BAY",
"GREAT BAY ESTUARY - GREAT BAY", "GREAT BAY ESTUARY - GREAT BAY",
"GREAT BAY ESTUARY - ADAMS POINT", "GREAT BAY ESTUARY - ADAMS POINT",
"GREAT BAY ESTUARY - ADAMS POINT", "GREAT BAY ESTUARY - ADAMS POINT",
"GREAT BAY ESTUARY - ADAMS POINT", "GREAT BAY ESTUARY - COASTAL MARINE LABORATORY",
"GREAT BAY ESTUARY - COASTAL MARINE LABORATORY", "GREAT BAY ESTUARY - COASTAL MARINE LABORATORY",
"GREAT BAY ESTUARY - COASTAL MARINE LABORATORY", "GREAT BAY ESTUARY - COASTAL MARINE LABORATORY",
"GREAT BAY ESTUARY - GREAT BAY", "GREAT BAY ESTUARY - GREAT BAY",
"GREAT BAY ESTUARY - GREAT BAY", "GREAT BAY ESTUARY - GREAT BAY",
"GREAT BAY ESTUARY - GREAT BAY", "GREAT BAY ESTUARY - COASTAL MARINE LABORATORY",
"GREAT BAY ESTUARY - COASTAL MARINE LABORATORY", "GREAT BAY ESTUARY - COASTAL MARINE LABORATORY",
"GREAT BAY ESTUARY - COASTAL MARINE LABORATORY", "GREAT BAY ESTUARY - COASTAL MARINE LABORATORY",
"GREAT BAY ESTUARY - GREAT BAY", "GREAT BAY ESTUARY - GREAT BAY",
"GREAT BAY ESTUARY - GREAT BAY", "GREAT BAY ESTUARY - GREAT BAY",
"GREAT BAY ESTUARY - GREAT BAY")), class = c("grouped_df", "tbl_df",
"tbl", "data.frame"), row.names = c(NA, -40L), groups = structure(list(
variable_units = c("Dissolved Oxygen Saturation_%", "Dissolved Oxygen Saturation_%",
"Dissolved Oxygen Saturation_%", "Dissolved Oxygen_mg/l",
"Dissolved Oxygen_mg/l", "Dissolved Oxygen_mg/l", "Turbidity_ntu",
"Turbidity_ntu"), sitename = c("GREAT BAY ESTUARY - ADAMS POINT",
"GREAT BAY ESTUARY - COASTAL MARINE LABORATORY", "GREAT BAY ESTUARY - GREAT BAY",
"GREAT BAY ESTUARY - ADAMS POINT", "GREAT BAY ESTUARY - COASTAL MARINE LABORATORY",
"GREAT BAY ESTUARY - GREAT BAY", "GREAT BAY ESTUARY - COASTAL MARINE LABORATORY",
"GREAT BAY ESTUARY - GREAT BAY"), .rows = structure(list(
1:5, 6:10, 11:15, 16:20, 21:25, 26:30, 31:35, 36:40), ptype = integer(0), class = c("vctrs_list_of",
"vctrs_vctr", "list"))), row.names = c(NA, -8L), .drop = TRUE, class = c("tbl_df",
"tbl", "data.frame")))
I figured out a way to do this without using
forloop orapply.