簡體   English   中英

R中基於時間序列和分組的數據分區

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

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