簡體   English   中英

有沒有辦法計算日期之間的天數,對於不同的網站,以及特定的天數必須打折?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM