0

另一个我无法解决的棘手问题。

我有两个数据框(“阳光”和“霜”)。一个是每年累积日照时数,另一个是冬季极端温度(12 月至 2 月)。我现在需要做的是,检查这些 data.frames 是否有 Frost。如果温度低于-19度,我们在这种情况下谈论霜冻。但是,如果一年中的日照时数超过 300 小时,我们就会谈到 - 21 度的霜冻。但是,另一个前提条件是,必须检查数据帧 Frost 中的年份是否为当前年末和次年年初(12 月至 2 月)。这意味着,如果 1962 年的日照时间超过 300 小时,我需要检查 1962 年 12 月到 1963 年 2 月的 Frost。这是 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°。1964 年也有霜冻,因为 1963 年日照时间超过 300 小时。

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 回答