[英]Data partitioning based on timeseries and groups in R
我需要將大量 dataframe 的氣象時間序列拆分為訓練和驗證樣本。 它包含來自多個站點的數據,這些站點具有不同的觀測周期。 我如何划分它,以便每個站的訓練和驗證觀察的比例相等。 給定以下數據集:
車站 | 日期 | 溫度 |
---|---|---|
A | 2012-01-01 | -0.8 |
A | 2012-01-02 | 0.1 |
A | 2012-01-03 | 0.5 |
A | 2012-01-04 | 0.4 |
乙 | 2012-01-01 | 0.1 |
乙 | 2012-01-02 | 0.5 |
並假設訓練集應僅包括每個站點的前 50% 的觀測值,則所需的 output 將是:
車站 | 日期 | 溫度 |
---|---|---|
A | 2012-01-01 | -0.8 |
A | 2012-01-02 | 0.1 |
乙 | 2012-01-01 | 0.1 |
根據您的示例,您可以使用 dplyr 中的slice_head
。要創建驗證,請刪除訓練中的記錄。 這是為了避免在站點的記錄數量不均勻時選擇重復項。
training <- df1 %>%
mutate(Date = as.Date(Date),
id = row_number()) %>%
group_by(Station) %>%
slice_head(prop = 0.5)
validation <- df1 %>%
mutate(Date = as.Date(Date),
id = row_number()) %>%
filter(!id %in% training$id)
training
# A tibble: 3 x 4
# Groups: Station [2]
Station Date temp id
<chr> <date> <dbl> <int>
1 A 2012-01-01 -0.8 1
2 A 2012-01-02 0.1 2
3 B 2012-01-01 0.1 5
validation
Station Date temp id
1 A 2012-01-03 0.5 3
2 A 2012-01-04 0.4 4
3 B 2012-01-02 0.5 6
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.