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

在R语言中如何生成仅截止到指定日期03/07的数据表

实现方法

你可以通过两种方式调整输出的截止日期,两种方法均可实现仅保留到03/07的结果:

方法1:提前过滤待计算的日期列表

在生成待处理日期向量dates时就加入日期上限条件,避免多余的计算,修改dates赋值行即可:

# 原代码行
# dates <- subset(df1, date2 > date1, select = date2)$date2
# 修改为如下内容,加入截止日期限制
dates <- subset(df1, date2 > date1 & date2 <= ymd("2021-07-03"), select = date2)$date2

方法2:对最终输出结果做过滤

在代码最后的管道操作中加入过滤条件,直接筛除超出日期范围的结果:

# 原代码最后一段
# map_dfr(dates, ~ {
#   ... # 中间内容不变
# }) %>%
#   mutate(dates = format(ymd(dates), "%d/%m/%Y"))
# 修改为在mutate后加filter
}) %>%
  mutate(dates = format(ymd(dates), "%d/%m/%Y")) %>%
  filter(dates <= "03/07/2021")

修改后完整可运行代码

library(purrr)
library(dplyr)
library(tidyverse)
library(lubridate)

df1 <- structure(
  list(date1 = c("2021-06-28","2021-06-28","2021-06-28","2021-06-28","2021-06-28",
                 "2021-06-28","2021-06-28","2021-06-28","2021-06-28","2021-06-28"),
       date2 = c("2021-04-02","2021-04-03","2021-04-08","2021-04-09","2021-04-10","2021-07-01","2021-07-02","2021-07-03","2021-07-04","2021-07-05"),
       Week= c("Friday","Saturday","Thursday","Friday","Saturday","Thursday","Friday","Saturday","Sunday","Monday"),
       DR01 = c(14,11,14,13,13,14,13,16,15,12), DR02= c(14,12,16,17,13,12,17,14,13,13),DR03= c(19,15,14,13,13,12,11,15,13,13),
       DR04 = c(15,14,13,13,16,12,11,19,11,13),DR05 = c(15,14,15,13,16,12,11,19,14,13),
       DR06 = c(21,14,13,13,15,16,17,18,12,11),DR07 = c(12,15,14,14,19,14,17,18,14,13)),
  class = "data.frame", row.names = c(NA, -10L))

# 此处用方法1提前过滤日期
dates <- subset(df1, date2 > date1 & date2 <= ymd("2021-07-03"), select = date2)$date2
map_dfr(dates, ~ {
  datas <- df1 %>%
    filter(date2 == ymd(.x)) %>%
    summarize(across(starts_with("DR"), sum)) %>%
    pivot_longer(everything(), names_pattern = "DR(.+)", values_to = "val") %>%
    mutate(name = as.numeric(name))
  colnames(datas)<-c("Days","Numbers")
  mod <- nls(Numbers ~ b1*Days^2+b2,start = list(b1 = 47,b2 = 0), data = datas)
  tibble(dates = .x, coef = coef(mod)[2])
}) %>%
  mutate(dates = format(ymd(dates), "%d/%m/%Y"))

输出结果

# A tibble: 3 × 2
  dates       coef
  <chr>      <dbl>
1 01/07/2021  12.2
2 02/07/2021  12.4
3 03/07/2021  15.6

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 06:57:02