You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为起止日期不同的STAND生成按周间隔的中间日期数据框

地块周间隔日期数据集生成方案

原始数据集代码

library(dplyr)
library(lubridate)
DS_F_norm_sel <- read.csv("https://raw.githubusercontent.com/Leprechault/trash/main/indexes_dates_bug.csv")
DS_F_norm_sel <- DS_F_norm_sel %>% dplyr::select(STAND, DATE, STATUS, SAVI_MAX, MSR_SD, GCI_SD)
DS_F_norm_sel$DATE <- lubridate::ymd(DS_F_norm_sel$DATE)
max_min_stands <- DS_F_norm_sel %>% 
  group_by(STAND) %>% 
  dplyr::summarize(max_date = max(DATE), min_date = min(DATE))
as.data.frame(max_min_stands)
# 输出示例:
#                     STAND   max_date   min_date
# 1            ALAMEDA_007A 2022-03-28 2022-02-11
# 2             ALCINA_001A 2022-04-20 2022-02-09
# 3           ALDOSANI_031A 2022-06-11 2022-02-11
# ...
# 184        VILAPALMA_033K 2022-04-02 2022-02-01
# 185        VILAPALMA_038G 2022-05-22 2022-02-01

需求说明

需要创建与原数据集结构一致的新数据框new.DS_F_norm_sel,包含每个STAND从最小日期到最大日期之间的所有按周间隔的日期,期望输出格式如下:

new.DS_F_norm_sel
STAND          DATE
ALAMEDA_007A   2022-02-11
ALAMEDA_007A   2022-02-18
ALAMEDA_007A   2022-02-25
...
ALAMEDA_007A   2022-03-28
...
VILAPALMA_038G 2022-02-01
VILAPALMA_038G 2022-02-08
...
VILAPALMA_038G 2022-05-22

解决方案代码

library(dplyr)
library(lubridate)

# 读取并预处理数据集
DS_F_norm_sel <- read.csv("https://raw.githubusercontent.com/Leprechault/trash/main/indexes_dates_bug.csv")
DS_F_norm_sel <- DS_F_norm_sel %>% 
  select(STAND, DATE, STATUS, SAVI_MAX, MSR_SD, GCI_SD) %>% 
  mutate(DATE = ymd(DATE))

# 生成目标数据集
new.DS_F_norm_sel <- DS_F_norm_sel %>%
  group_by(STAND) %>%
  summarize(
    # 生成每周间隔的日期序列
    DATE = seq(from = min(DATE), to = max(DATE), by = "week"),
    # 保留原数据集的其他列,这里取每组第一个值,可按需调整
    STATUS = first(STATUS),
    SAVI_MAX = first(SAVI_MAX),
    MSR_SD = first(MSR_SD),
    GCI_SD = first(GCI_SD)
  ) %>%
  ungroup()

# 查看结果示例
head(new.DS_F_norm_sel)

代码逻辑说明

  • 分组处理:通过group_by(STAND)对每个地块单独处理;
  • 生成周间隔日期:调用seq()函数,指定by = "week"生成每周的日期序列,起止点为该地块的最早、最晚记录日期;
  • 保留原结构列:使用first()提取每组原数据中的对应列值(如果同一地块的其他列存在多值,可根据实际需求替换为mean()、last()等聚合逻辑);
  • 取消分组:最后用ungroup()解除分组,得到常规数据框结构。

内容的提问来源于stack exchange,提问作者Leprechault

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 01:01:07