Я не знаю, как правильно это сформулировать. Вот моя проблема.операции с последовательными строками вектора в R
очень простой кадр данных что-то вроде -
df= {"time" "east" "north"
1 0 0
2 2 0
3 1 0
4 1 2
}
Теперь, я хотел бы добавить расстояния (в качестве другого столбца) между двумя последовательными кадрами времени (за исключением первой строки). Например, например, в time==2
расстояние должно быть рассчитано как sqrt((2-0)*(2-0) + (0-0)*(0-0))
. , Вероятно, результат может быть что-то вроде этого
df= {"time" "east" "north" "distance"
1 0 0 0
2 2 0 2
3 1 0 1
4 1 2 2
}
Естественно, я хотел бы иметь метод, чтобы получить расстояние, которое принимает на восток и на север от двух последовательных строк и возвращает евклидово расстояние между точками. 1) Как достичь расстояния между двумя последовательными точками в кадре данных?
Я хочу применить аналогичные операции или настраиваемые функции (расстояние, последовательное вычитание и т. Д.) Для подмножеств огромных кадров данных. В конце я хотел бы построить сегменты, например.
index = length(df$time)-1
segments(df$time[index],df$time[index+1], df$distance[index], df$distance[index+1])
2) Есть ли лучший способ построить сегменты из последовательных точек? Указатель на что-то подобное также будет очень полезен.
Не ясно, что вам нужно. Возможно, если вы включите ожидаемый результат ... – Sotos
спасибо, я добавил также выход. – novice
, основанный на вашей оценке, 'с (df, sqrt ((восток-север)^2 + (лаг (восток) -лаг (север))^2))', тогда значения будут разными. – akrun