我有以下資料示例:
trap_data <- structure(list(site = c(1, 2, 3, 3), trap_date = structure(c(18809,
18809, 18307, 18322), class = "Date")), class = "data.frame", row.names = c(NA,
-4L))
climate <- structure(list(site = c(1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3),
V1 = c(0.1, 0.2, 0.1, 0.1, 0.5, 0.2, 0.3, 0.1, 0.2, 0.1,
0.1, 0.5), V2 = c(1, 1, 3, 1, 2, 3, 3, 1, 1, 3, 1, 2), date = structure(c(18779,
18790, 18789, 18792, 18791, 18790, 18789, 18792, 18305, 18306,
18307, 18308), class = "Date")), class = "data.frame", row.names = c(NA,
-12L))
我將在 trap_data 中添加列,這些列總結了氣候資料 V1 和 V2 的 N、平均值和總和,以站點和日期為條件。但是,我希望這些新變數(N、平均值和總和)適用于 trap_data 中指定日期之前的 N 天(這些時間長度是可變的。例如當前 20 天)。
謝謝,
uj5u.com熱心網友回復:
我們可能會在“trap_data”中創建一個新列 - 20 天前的日期,然后進行連接
library(data.table)
library(lubridate)
setDT(trap_data)[, prev_date := trap_date - days(20)]
setDT(climate)[trap_data, .(N = .N,
MeanV1 = mean(V1, na.rm = TRUE),
SumV1 = sum(V1, na.rm = TRUE),
MeanV2 = mean(V2, na.rm = TRUE),
SumV2 = sum(V2, na.rm = TRUE)),
on = .(site, date >= prev_date, date <= trap_date), by = .EACHI]
-輸出
site date date N MeanV1 SumV1 MeanV2 SumV2
<num> <Date> <Date> <int> <num> <num> <num> <num>
1: 1 2021-06-11 2021-07-01 3 0.1333333 0.4 1.666667 5
2: 2 2021-06-11 2021-07-01 4 0.2750000 1.1 2.250000 9
3: 3 2020-01-26 2020-02-15 3 0.1333333 0.4 1.666667 5
4: 3 2020-02-10 2020-03-01 4 0.2250000 0.9 1.750000 7
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/496118.html
上一篇:如果值不在fence_high和fence_low列之間,如何插入NaN
下一篇:根據通用日期時間格式DD/MM/YYYY創建新列,但遇到錯誤“ValueError:binsmustincreasemonotonically.”
