У меня есть фрейм данных, который содержит несколько чередующихся значений, которые произошли на временной шкале. Я хотел бы создать новый фрейм данных, который содержит номера строк (в основном идентификаторы строк), дескриптор файла, операцию и значение «size».
Пример:
line fd syscall size
1 1 1 lseek 1289020416
2 2 1 lseek 1289021440
3 3 2 lseek 1289024512
4 4 1 lseek 1289025536
5 5 2 lseek 1289026560
6 6 1 lseek 1289027584
Я бы хотел вычислить разность значений размера на единицу измерения и показать начальную точку различий. Функция diff
сама выбрасывает много данных. Есть ли что-то подобное, что поможет мне иметь контекст (например, где было начало каждой строки)?
Мне бы хотелось, чтобы результаты выглядели следующим образом: я знаю, как далеко продвинулся каждый fd с предыдущей строки, и какова была предыдущая строка.
line fd diff
1 1 1 1024
2 2 1 4096
3 3 2 2048
4 4 1 2048
Есть ли что-то, что я могу сделать, это проще, чем разорвать все на части и зациклить? Я должен верить, что у кого-то немного лучше diff
.
Пример ввода:
structure(list(line = 1:6, fd = c(1, 1, 2, 1, 2, 1), syscall = structure(c(1L,
1L, 1L, 1L, 1L, 1L), class = "factor", .Label = "lseek"), size = c(1289020416,
1289021440, 1289024512, 1289025536, 1289026560, 1289027584)), .Names = c("line",
"fd", "syscall", "size"), row.names = c(NA, -6L), class = "data.frame")