0

私が解決できない別のトリッキーな質問。

2 つのデータフレーム ("sunshine" と "frost") があります。1 つは年間の累積日照時間で、もう 1 つは冬の極端な温度 (12 月から 2 月) です。私が今しなければならないことは、これらの data.frames で Frost をチェックすることです。この場合、気温が-19度を下回った場合、霜について話します。ただし、1 年間の日照時間が 300 時間を超えている場合は、-21 度で霜が降ります。ただし、もう 1 つの前提条件は、データフレーム Frost の年が現在の終わりと翌年の始まり (12 月から 2 月) についてチェックされる必要があることです。つまり、1962 年に日照時間が 300 時間を超えた場合、1962 年 12 月から 1963 年 2 月までの霜をチェックする必要があります。これが data.frames です。

"Sunshine"

year       hours
1962       396
1963       290
1964       301


"Frost"

Date temperature
1962-12-26 -19.21
1963-01-13 -20.29
1963-01-17 -21.47
1964-01-31 -20.54

今、私が抱えている問題は、これらをデータフレームに結合する方法であり、条件が満たされたフロスト温度の日付のみが表示されます。

この場合、1962 年冬に 19,21° の霜イベントは発生しませんでした。これは、年間の日照時間が 300 時間を超え、トリガー温度が -21° であるためです。1963 年 1 月には霜が降りました。1962 年には日照時間が 300 時間を超えたため、条件は -21°まで上がりました。1963 年に日照時間が 300 時間を超えたため、1964 年にも霜が降りました。

1963-01-17 -21.47
1964-01-31 -20.54

誰もこの問題を解決する方法について考えを持っていますか?

4

1 に答える 1

0

ジャスティンの提案を取り上げ、Frost$Dateクラスがあると仮定しますDate

x <- Frost
x$year <- as.numeric(format(x$Date, "%Y"))
x <- merge(x, Sunshine)
x <- transform(x, threshold = ifelse(hours > 300, -21, -19))
subset(x, temperature < threshold)[,2:3]  # Noting that column 1 is year

#         Date temperature
#2 1963-01-13      -20.29
#3 1963-01-17      -21.47
于 2012-12-03T20:06:15.453 に答える