毎週の寄付で1500万ウォンを達成する - Rの時系列グラフで目標を追跡する
2022年11月20日から毎週2万ウォンずつ、そして毎月1回は5万ウォン(2万ウォンの代わりに)を寄付することを決め、継続しています。 そして、目標金額1500万ウォンを達成する時点を時系列グラフで確認したいと思います。
今日は、このような寄付計画をどのように時系列で追跡し、目標達成時点をRグラフで可視化することができるのか、Rコードで見てみましょう。 毎月、毎週寄付をしたときに累積金額がどのように増加するかを時系列グラフで確認することができます。
1.寄付計画と目標設定

私が計画した寄付目標は以下の通りです。以下の寄付計画に基づき、いつ目標を達成できるかを計算してみます。
- 毎週 2万円ずつ寄付。
- 月に1回は5万円寄付。
- 目標金額は1500万ウォンです。
2.必要なパッケージの読み込み
まず、日付計算のための ルブリデート パッケージとグラフ作成のための ggplot2 パッケージをロードします。
# 必要なパッケージの読み込み
library(lubridate)
library(ggplot2)説明: ルブリデート パッケージは日付の計算に便利です、 ggplot2はデータ可視化のためのパッケージです。
3.変数の初期化
寄付開始日、目標金額、毎週の寄付金額、毎月の寄付金額、そして今日の日付を変数として定義します。
# 変数初期化
start_date <- as.Date("2022-11-20")
end_goal <- 15000000 # 1500万ウォン目標
weekly_donation <- 20000 # 毎週 2万ウォン
monthly_donation <- 50000 # 毎月5万ウォン
today <- as.Date("2024-11-10")説明:
start_date寄付開始日です。end_goal目標金額(15,000,000ウォン)です。weekly_donation: 毎週寄付する金額(20,000ウォン)です。monthly_donation: 毎月追加で寄付する金額(50,000ウォン)です。今日現在の日付を基準に寄付の進捗状況を確認するために設定した日付です。
4.日付と累積金額を保存するデータフレームを作成します。
2022年11月20日から毎週寄付日となる日付を作成し 日付 変数に保存し、それをデータフレーム 寄付金に保存します。
# 日付と累積金額を保存するデータフレームを作成します。
dates <- seq(from = start_date, by = "week", length.out = 520) # 2032年12月31日までに
donations <- data.frame(Date = dates, Donation = 0)説明:
日付: 毎週の寄付日に該当する日付のリストです。最大長を520週間に設定し、2032年末までの日付を生成します。寄付金: 各日付とその日の累積寄付額を記録するデータフレームです。
5.寄付の累積計算
反復文を通じて毎週寄付金額を累積し、毎月第4週には追加で5万ウォンを加算し、合計寄付金額を累積します。目標金額に達した時点で反復を終了します。
# 寄付の累積計算
total_donation <- 0
for (i in 1:nrow(donations)) {
if (i %%% 4 == 0) { # 毎月5万ウォン追加
total_donation <- total_donation + weekly_donation + monthly_donation
} else { {
total_donation <- total_donation + weekly_donation + monthly_donation
} }
donations$Donation[i] = end_goal) {
# 目標達成日計算
goal_date <- donations$Date[i] <- goal_date
break
}
}説明:
のためにループを通じて毎週weekly_donation金額を累積します。if (i %% 4 == 0)毎月第4週目ごとにmonthly_donationを追加します。donations$Donation[i] <- total_donation:各日の累積寄付金額を記録します。- 目標金額に達したら
goal_date変数に目標達成日を保存し、反復を終了します。
6.現在の累積寄付額の確認
設定した日付(今日)までの累積寄付金額を確認します。
# 現在の累積金額確認
current_donation <- donations$Donation[which(donations$Date <= today)]].
current_donation <- tail(current_donation, 1)説明: current_donationは 今日 日付を基準に累積寄付金額を確認し、最新の値のみを保存し、現在の累積金額を表示します。
7.Rグラフ生成
累積寄付金額を視覚化して、目標金額と目標達成日を含む時系列グラフを作成します。
# Rグラフ生成
p <- ggplot(donations, aes(x = Date, y = Donation)) + p <- ggplot(donations, aes(x = Date, y = Donation))
geom_line(color = "blue")+。
geom_hline(yintercept = end_goal, linetype = "dashed", color = "red") + geom_vline(yintercept = end_goal, linetype = "dashed", color = "red")
geom_vline(xintercept = as.numeric(goal_date), linetype = "点線", color = "緑") + geom_vline(xintercept = as.numeric(goal_date), linetype = "dotted", color = "green")
labs(
title = "累積寄付金時系列グラフ"、
subtitle = paste("目標達成予定日:", format(goal_date, "%Y-%m-%d"))、
x = "日付"、
y = "累積寄付額(ウォン)"
)+。
annotate("text", x = goal_date, y = end_goal, label = "目標達成", vjust = -1.5, color = "緑") + +.
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")目標達成日を緑色の点線で表示します。labs(): グラフタイトル、副題、軸ラベルを指定します。小見出しには目標達成予定日を表示します。annotate("text")目標達成日に「Goal Achieved」ラベルを追加して、達成点を強調します。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 # 1500万ウォン目標
weekly_donation <- 20000 # 毎週2万ウォン
monthly_donation <- 50000 # 毎月5万ウォン
today <- as.Date("2024-11-10")
# 日付と累積金額を保存するデータフレームを生成します。
dates <- seq(from = start_date, by = "week", length.out = 520) # 2032年12月31日まで
donations <- data.frame(Date = dates, Donation = 0)
# 寄付の累積計算
total_donation <- 0
for (i in 1:nrow(donations)) {
if (i %%% 4 == 0) { # 毎月5万ウォン追加
total_donation <- total_donation + weekly_donation + monthly_donation
} else { {
total_donation <- total_donation + weekly_donation + monthly_donation
} }
donations$Donation[i] = end_goal) {
# 目標達成日計算
goal_date <- donations$Date[i] <- goal_date
break
}
}
# 現在の累積金額確認
current_donation <- donations$Donation[which(donations$Date <= today)]].
current_donation <- tail(current_donation, 1)
# Rのグラフ生成
p <- ggplot(donations, aes(x = Date, y = Donation)) + + p <- ggplot(donations, aes(x = Date, y = Donation))
geom_line(color = "blue")+。
geom_hline(yintercept = end_goal, linetype = "dashed", color = "red") + geom_vline(yintercept = end_goal, linetype = "dashed")
geom_vline(xintercept = as.numeric(goal_date), linetype = "点線", color = "緑") + geom_vline(xintercept = as.numeric(goal_date), linetype = "dotted", color = "green")
labs(
title = "累積寄付金時系列グラフ"、
subtitle = paste("目標達成予定日:", format(goal_date, "%Y-%m-%d"))、
x = "日付"、
y = "累積寄付額(ウォン)"
)+。
annotate("text", x = goal_date, y = end_goal, label = "目標達成", vjust = -1.5, color = "green") + +.
theme_minimal() + +.
scale_x_date(limits = c(start_date, as.Date("2032-12-31")))
print(p)



