[英]Is there a way to calculate the number of days between dates, for various sites, and where specific days have to be discounted?
我正在尋找計算陷阱在研究區域內的各個地點工作的天數。
我有一個包含多個調查站點的數據集,每個站點都在多個日期進行了檢查。 我正在尋找一種方法來計算每個站點每次檢查之間的天數。 有一個小問題,至於一些地點和日期,陷阱被打破了。 對於這些,我需要將直到最近的陷阱工作日期之前的所有天數都歸類為“非工作日”,因此不計算在內。
這是數據的一個子集 -
structure(list(Date.of.Survey = c("12/04/2022", "16/04/2022",
"12/04/2022", "13/04/2022", "14/04/2022", "15/04/2022", "18/04/2022",
"19/04/2022", "20/04/2022", "22/04/2022", "26/04/2022", "27/04/2022",
"28/04/2022", "29/04/2022", "01/05/2022", "03/05/2022", "04/05/2022",
"05/05/2022", "06/05/2022", "12/05/2022", "10/05/2022", "11/05/2022",
"12/05/2022", "13/05/2022", "19/05/2022", "17/05/2022", "18/05/2022",
"19/05/2022", "20/05/2022", "27/05/2022", "24/05/2022", "25/05/2022",
"26/05/2022", "27/05/2022", "04/06/2022", "31/05/2022", "01/06/2022",
"02/06/2022", "03/06/2022", "07/06/2022", "08/06/2022", "09/06/2022",
"10/06/2022", "18/06/2022", "14/06/2022", "15/06/2022", "16/06/2022",
"17/06/2022", "21/06/2022", "22/06/2022", "23/06/2022", "24/06/2022",
"28/06/2022", "29/06/2022", "30/06/2022", "01/07/2022", "05/07/2022",
"06/07/2022", "07/07/2022", "08/07/2022"), Location = c("Wandle - Merton Abbey Mills",
"Wandle - Merton Abbey Mills", "Medway - Allington Weir", "Medway - Allington Weir",
"Medway - Allington Weir", "Medway - Allington Weir", "Medway - Allington Weir",
"Medway - Allington Weir", "Medway - Allington Weir", "Medway - Allington Weir",
"Medway - Allington Weir", "Medway - Allington Weir", "Medway - Allington Weir",
"Medway - Allington Weir", "Wandle - Merton Abbey Mills", "Medway - Allington Weir",
"Medway - Allington Weir", "Medway - Allington Weir", "Medway - Allington Weir",
"Wandle - Merton Abbey Mills", "Medway - Allington Weir", "Medway - Allington Weir",
"Medway - Allington Weir", "Medway - Allington Weir", "Wandle - Merton Abbey Mills",
"Medway - Allington Weir", "Medway - Allington Weir", "Medway - Allington Weir",
"Medway - Allington Weir", "Wandle - Merton Abbey Mills", "Medway - Allington Weir",
"Medway - Allington Weir", "Medway - Allington Weir", "Medway - Allington Weir",
"Wandle - Merton Abbey Mills", "Medway - Allington Weir", "Medway - Allington Weir",
"Medway - Allington Weir", "Medway - Allington Weir", "Medway - Allington Weir",
"Medway - Allington Weir", "Medway - Allington Weir", "Medway - Allington Weir",
"Wandle - Merton Abbey Mills", "Medway - Allington Weir", "Medway - Allington Weir",
"Medway - Allington Weir", "Medway - Allington Weir", "Medway - Allington Weir",
"Medway - Allington Weir", "Medway - Allington Weir", "Medway - Allington Weir",
"Medway - Allington Weir", "Medway - Allington Weir", "Medway - Allington Weir",
"Medway - Allington Weir", "Medway - Allington Weir", "Medway - Allington Weir",
"Medway - Allington Weir", "Medway - Allington Weir"), Was.the.trap.working.when.you.checked.it. = c("Yes",
"Yes", "Yes", "Yes", "Yes", "Yes", "Yes", "Yes", "Yes", "Yes",
"Yes", "Yes", "Yes", "Yes", "Yes", "Yes", "Yes", "Yes", "Yes",
"Yes", "Yes", "Yes", "Yes", "Yes", "Yes", "Yes", "Yes", "Yes",
"Yes", "Yes", "Yes", "Yes", "Yes", "Yes", "Yes", "Yes", "Yes",
"Yes", "Yes", "Yes", "Yes", "Yes", "Yes", "Yes", "Yes", "Yes",
"Yes", "Yes", "No", "Yes", "Yes", "Yes", "Yes", "Yes", "Yes",
"No", "Yes", "Yes", "Yes", "Yes"), Number.of.eels = c(0L, 1L,
0L, 0L, 0L, 20L, 2L, 5L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 0L,
0L, 2L, 1L, 0L, 1L, 2L, 0L, 1L, 16L, 7L, 2L, 1L, 1L, 0L, 0L,
0L, 1L, 1L, 6L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 2L, 3L, 3L,
0L, 0L, 0L, 2L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 1L)), row.names = c(NA,
-60L), class = c("tbl_df", "tbl", "data.frame"))
理想情況下,我希望有一個表格顯示每個站點陷阱運行的總天數,其中一列顯示每個陷阱捕獲的魚的總數。
提前致謝
我已經看到了這些陷阱——這很有趣,工人們非常友好地解釋了他們在做什么。
無論如何,關於這個問題。 您可以執行以下操作:
library(dplyr)
dat |>
mutate(survey_date = as.Date(
Date.of.Survey,
format = "%d/%m/%Y"
)) |>
arrange(Location, survey_date) |>
group_by(Location) |>
mutate(
lag_date = lag(survey_date),
num_days = as.integer(survey_date - lag_date)
) |>
filter(
Was.the.trap.working.when.you.checked.it. == "Yes"
) |>
summarise(
total_days_trap_working = sum(num_days, na.rm = TRUE),
total_eels = sum(Number.of.eels)
)
# A tibble: 2 x 3
# Location total_days_trap_working total_eels
# <chr> <int> <int>
# 1 Medway - Allington Weir 82 78
# 2 Wandle - Merton Abbey Mills 67 7
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.