【发布时间】:2019-06-01 04:09:59
【问题描述】:
我有一个 B_S 列,其中包含两个值“S2”和“S1”。 S2 标记每个组的边界和每个组的原始行。 S1 用 High 列标记了可能需要检查的项目。
例如,我需要检查 S1 High 是否大于 S2 High。我需要遍历所有 S1 条目并选择 S1 High 高于 S2 High 的行并删除 S1 High 不高于 S2 的行。
我对 data.table 没有足够的经验来产生这样的结果。
以下是数据示例:
structure(list(Time = c("16/10/2014 09:19", "16/10/2014 09:20",
"16/10/2014 09:21", "16/10/2014 09:22", "17/12/2014 12:59", "17/12/2014 13:00",
"17/12/2014 13:01", "17/12/2014 13:02"), High = c(1833.5, 1832.5,
1820.5, 1852.5, 1992, 1991.25, 2001.25, 2002.25), rn = c(77470L,
77469L, 77468L, 77467L, 17758L, 17757L, 17756L, 17755L), B_S = c("S2",
"S1", "S1", "S1", "S2", "S1", "S1", "S1")), row.names = c(NA,
-8L), class = c("data.table", "data.frame")
预期结果: 对于第 1 组(第 1-4 行),将保留第 1 行和第 4 行。
structure(list(Time = c("16/10/2014 09:19", "16/10/2014 09:22"
), High = c(1833.5, 1852.5), rn = c(77470L, 77467L), B_S = c("S2",
"S1")), class = c("data.table", "data.frame"), row.names = c(NA,
-2L)
对于第二组(第 5-8 行),第 5 行和第 7 行将被保留。
structure(list(Time = c("17/12/2014 12:59", "17/12/2014 13:01"
), High = c(1992, 2001.25), rn = c(17758L, 17756L), B_S = c("S2",
"S1")), class = c("data.table", "data.frame"), row.names = c(NA,
-2L)
【问题讨论】:
标签: r data.table