每周捐款达到 1,500 万美元--使用 R 时间序列图跟踪目标

我决定从 2022 年 11 月 20 日开始,每周捐出 2 万美元,每月捐出 5 万美元(而不是 2 万美元),并一直坚持到现在。 我想看看我达到 1,500 万美元目标时的时间序列图。

今天,我们将探讨如何以时间序列的形式跟踪这一捐赠计划,并用 R 代码将您达到目标时的情况可视化,这样您就可以在时间序列图中看到您每月和每周捐赠的累计金额是如何增长的。

1. 制定捐赠计划和目标

시계열 그래프 그림 - 목표

这是我的计划捐赠目标。让我们根据下面的捐赠计划计算一下我何时能达到目标。

  • 每周 每人捐赠 20 美元。
  • 每月一次是 50 美元的捐款。
  • 目标金额是 1 500 万韩元。

2. 加载所需的软件包

首先,我们需要创建一个 润滑 套餐ggplot2 套餐在文件中。

# 加载所需软件包
library(lubridate)
library(ggplot2)

说明 润滑 软件包方便了日期计算、 ggplot2是一个数据可视化软件包。

3. 初始化变量

定义以下变量:捐赠开始日期、目标金额、每周捐赠金额、每月捐赠金额和今天的日期。

初始化 # 变量
start_date <- as.Date("2022-11-20")
end_goal <- 15000000 # 目标 1,500 万韩元
weekly_donation <- 20000 # 每周 20,000 韩元
monthly_donation <- 50000 # 每月 50,000 韩元
today <- as.Date("2024-11-10")

说明

  • 开始日期捐赠开始日期。
  • 结束目标目标金额(15 000 000 韩元)。
  • 每周捐款您每周捐赠的金额(20,000 韩元)。
  • 每月捐款:您每月额外捐赠的金额(50,000 韩元)。
  • 今天日期:您设定的日期,用于查看相对于当前日期的捐款进度。

4. 创建一个数据框,存储日期和累计金额

自 2022 年 11 月 20 日起,您可以通过创建一个 日期 变量,并将其存储到数据帧 捐款在文件中。

# 创建一个数据帧来存储日期和累计金额
dates <- seq(from = start_date, by = "week", length.out = 520) # 至 2032 年 12 月 31 日
捐款 <- data.frame(Date = dates, Donation = 0)

说明

  • 日期日期:与每周捐赠日相对应的日期列表。设置最大长度为 520 周,可生成直到 2032 年底的日期。
  • 捐款记录每个日期和该日期累计捐款金额的数据框。

5. 计算捐赠积累

循环每周累计捐款金额,每月第四周增加 5 美元,累计捐款总额。当达到目标金额时,结束迭代。

# 捐款累积计算
捐款总额 <- 0
for (i in 1:nrow(donations)) {
    如果 (i %% 4 == 0) { # 每月增加 50,000 韩元
        捐款总额 <- 捐款总额 + 每周捐款 + 每月捐款
    } 否则 {
        总捐款 <- 总捐款 + 每周捐款
    }
    捐款$Donation[i] = end_goal) {
        计算 # 的目标日期
        goal_date <- donations$Date[i]
        中断
    }
}

说明

  • 对于 每周循环 每周捐款 累积金额。
  • 如果 (i %% 4 == 0):每月第四个星期 每月捐款到列表中。
  • donations$Donation[i] <- total_donation:记录每个日期的累计捐赠金额。
  • 达到目标金额时 目标日期 将目标实现日期保存在变量中,并结束迭代。

6. 查看当前的累计捐赠金额

您设置的日期 (今天) 查看累计捐款金额。

# 检查当前累计金额
current_donation <- donations$Donation[which(donations$Date <= today)] 当前捐款金额
current_donation <- tail(current_donation, 1)

说明 当前捐款今天 查看基于日期的累计捐款金额,只保存最近的值来代表当前的累计金额。

7.创建 R 图形

将累计捐款可视化,创建包含目标金额和目标实现日期的时间序列图。

生成 # R 图形
p <- ggplot(donations, aes(x = Date, y = Donation)) +
    geom_line(color = "blue") +
    geom_hline(yintercept = end_goal, linetype = "dashed", color = "red") +
    geom_vline(xintercept = as.numeric(goal_date), linetype = "dotted", color = "green") +
    labs(
        title = "累计捐款时间序列图"、
        subtitle = paste("Estimated Goal Achievement Date:", format(goal_date, "%Y-%m-%d"))、
        x = "日期"、
        y = "累计捐款(赢得的)"
    ) + +
    annotate("text", x = goal_date, y = end_goal, label = "Goal Achieved", vjust = -1.5, color = "green") +
    theme_minimal() +
    scale_x_date(limits = c(start_date, as.Date("2032-12-31"))))

print(p)

说明

  • geom_line(color = "blue")用一条蓝线来表示捐款额的累积增长。
  • geom_hline(yintercept = end_goal, linetype = "dashed", color = "red")目标值:以红色虚线显示目标值。
  • geom_vline(xintercept = as.numeric(goal_date), linetype = "dotted", color = "green")绿色虚线:显示目标实现日期的绿色虚线。
  • 实验室()图表标题:指定图表标题、副标题和坐标轴标签。在副标题中注明预期实现目标的日期。
  • 注释("文本")目标实现:在目标实现日期上添加 "目标实现 "标签,以突出里程碑。
  • theme_minimal()简化图表主题,突出数据。
  • scale_x_date(limits = c(start_date, as.Date("2032-12-31"))))调整可视化范围:将 x 轴上的范围限制在开始日期和 2032 年 12 月 31 日之间。
시계열 그래프 목표-실적

总结:可视化目标和累计捐款的时间序列图

在这篇文章中,我们将每周和每月的捐赠计划绘制成时间序列图,以查看我们何时达到了目标。 这种可视化的方式让我们直观地感受到我们是否达到了捐赠目标,并将帮助我们跟踪未来的捐赠目标。我们希望您也能尝试用这个代码来跟踪自己的捐赠计划!

与时间序列图类似,您也希望一目了然地了解自己在实现目标方面的表现。 如何绘制绩效与目标对比图? 查看该文章,了解如何做到这一点!

# 完整代码

# 加载所需软件包
library(lubridate)
library(ggplot2)

初始化 # 变量
start_date <- as.Date("2022-11-20")
end_goal <- 15000000 # 目标 1,500 万韩元
weekly_donation <- 20000 # 每周 20,000 韩元
monthly_donation <- 50000 # 每月 50,000 韩元
today <- as.Date("2024-11-10")

# 创建一个数据帧来存储日期和累计金额
dates <- seq(from = start_date, by = "week", length.out = 520) # 直到 2032 年 12 月 31 日
捐款 <- data.frame(Date = dates, Donation = 0)

# 计算累计捐赠额
捐款总额 <- 0
for (i in 1:nrow(donations)) {
    如果 (i %% 4 == 0) { # 每月增加 50,000 韩元
        捐款总额 <- 捐款总额 + 每周捐款 + 每月捐款
    } 否则 {
        总捐款 <- 总捐款 + 每周捐款
    }
    捐款$Donation[i] = end_goal) {
        计算 # 的目标日期
        goal_date <- donations$Date[i]
        中断
    }
}

# 检查当前累计金额
current_donation <- donations$Donation[which(donations$Date <= today)]
current_donation <- tail(current_donation, 1)

生成 # R 图形
p <- ggplot(donations, aes(x = Date, y = Donation)) +
    geom_line(color = "blue") +
    geom_hline(yintercept = end_goal, linetype = "dashed", color = "red") +
    geom_vline(xintercept = as.numeric(goal_date), linetype = "dotted", color = "green") +
    labs(
        title = "累计捐款时间序列图"、
        subtitle = paste("Estimated Goal Achievement Date:", format(goal_date, "%Y-%m-%d"))、
        x = "日期"、
        y = "累计捐款(赢得的)"
    ) + +
    annotate("text", x = goal_date, y = end_goal, label = "Goal Achieved", vjust = -1.5, color = "green") +
    theme_minimal() +
    scale_x_date(limits = c(start_date, as.Date("2032-12-31"))))

print(p)

类似文章