【发布时间】:2020-07-21 11:59:02
【问题描述】:
我有一个来自不同地点和不同年份的每日温度数据集。我想选择最小值,然后在该值之后 90 天为每年的每个位置选择记录。我还想选择最大值和 90 天后的记录。抱歉,但鉴于数据的周期性,我不确定如何轻松提供可重现的示例。
例如,如果我想从每年的最低和最高温度后 3 天提取行,则使用以下数据:
date <- c ("1985-01-01", "1985-01-02", "1985-01-03", "1985-01-04", "1985-01-05", "1985-01-06",
"1985-01-07", "1985-01-08", "1985-01-09", "1985-01-10", "1985-01-11", "1985-01-12", "1985-01-13", "1985-01-14", "1985-01-15",
"1986-01-01", "1986-01-02", "1986-01-03", "1986-01-04", "1986-01-05", "1986-01-06",
"1986-01-07", "1986-01-08", "1986-01-09", "1986-01-10", "1986-01-11", "1986-01-12", "1986-01-13", "1986-01-14", "1986-01-15",
"1987-01-01", "1987-01-02", "1987-01-03", "1987-01-04", "1987-01-05", "1987-01-06",
"1987-01-07", "1987-01-08", "1987-01-09", "1987-01-10", "1987-01-11", "1987-01-12", "1987-01-13", "1987-01-14", "1987-01-15")
year <- c(rep(1985, 15), rep(1986, 15), rep(1987, 15))
temp <- c(11, 10, 11, 9, 11, 12, 14, 16, 17, 16, 15, 14, 13, 12, 11, 8, 10, 11, 9, 11, 12, 14, 18, 17, 16, 19, 14, 13, 12, 11,
11, 10, 11, 9, 11, 7, 14, 16, 17, 16, 15, 18, 17, 12, 11)
df <- as.data.frame(cbind(date, year, temp))
理想情况下,输出将分为两个不同的子集,从每年最低的第一个子集开始:
dflow <- df[c(4:7, 16:19, 36:39), ]
每年的最高值倒数第二个:
dfhigh <- df[c(9:12, 26:29, 42:45),]
笨拙的例子对不起。与此示例数据和我的真实数据的不同之处在于,真实数据是自 1985 年以来一年中的每一天,我想要在最低和最高温度之后的 90 条记录..
【问题讨论】:
-
这应该很简单,我的方法是使用
data.tablenon-equi join...但是我无法提供没有可靠示例数据和所需输出的答案...所以请提供那些.
标签: r dplyr data.table tidyverse