Для data.table (или data.frame) в R я хочу найти все строки, которые содержат значение в столбце «значение», которые являются заданным расстоянием «расстояние» от другого этого значения подряд с тем же ключом. Итак, учитывая следующее:
distance <- 22
key value
A 1
B 1
C 1
D 1
A 4
B 4
A 23
B 23
B 26
B 26
C 30
Я хотел бы аннотировать исходную таблицу количеством строк, существующих с одним и тем же ключом, и значением, равным +22 от него:
key value count
A 1 1
B 1 1
C 1 0
D 1 0
A 4 0
B 4 2
A 23 0
B 23 0
B 26 0
B 26 0
C 30 0
Я действительно не знаю, где начнем с этого самореферентного подхода к манипулированию данными в R. Мои первоначальные попытки включали создание второй таблицы и попытку сопоставления с ней, но это казалось странным и плохим подходом.
Примечание. Я использую пакет data.table
, но в этом случае я буду рад работать с data.frame, если это упростит задачу.
Воспроизводимый:
require(data.table)
source <- data.table(data.frame(key=c("A","B","C","D","A","B","A","B","B","B", "C"),value=c(1,1,1,1,4,4,23,23,26,26,30)))
result <- data.table(data.frame(key=c("A","B","C","D","A","B","A","B","B","B","C"),value=c(1,1,1,1,4,4,23,23,26,26,30),count=c(1,1,0,0,0,2,0,0,0,0,0)))