次のようなdailyというデータフレームがあります。
daily[1:10,]
Climate_Division Date Precipitation
1 1 1948-07-01 0.2100000
2 1 1948-07-02 0.7000000
3 1 1948-07-03 0.1900000
4 1 1948-07-04 0.1033333
5 1 1948-07-05 0.1982895
6 1 1948-07-06 0.1433333
7 1 1948-07-07 NA
8 1 1948-07-08 NA
9 1 1948-07-09 NA
10 1 1948-07-10 NA
私が達成したい目的は、その特定の日に発生するNA値を置き換えるために、年間(1948-1995)のすべての日の値を平均することです。たとえば、行7には1948年7月7日のNAがあるため、1948年から1995年までの7月7日すべてを平均し、その特定の日を平均に置き換えます。
私がこれまでに試したことはこれです:
index <- which(is.na(daily$Precipitation)) # find where the NA's occur
daily_avg <- daily # copy dataframe
daily_avg$Date <- strftime(daily_avg$Date, format="2000-%m-%d") # Change the Date format to represent only the day and month and disregard year
daily_avg <- aggregate(Precipitation~Date, FUN = mean, data = daily_avg, na.rm = TRUE) # find the mean precip per day
daily[index,3] <- daily_avg[daily_avg$Date %in% strftime(daily[index,2], format="2000-%m-%d"), 2]
コードの最後の行が正しく機能していません。理由はまだわかりません。それが、この問題についての私の思考プロセスがどのように進んでいるかです。しかし、私が知らない組み込み関数を使用してそれを行うより良い方法があるかどうか疑問に思いました。どんな助けでも大歓迎です。ありがとうございました