Я хочу создать функцию для создания матрицы, основанной на перемещении многочисленных уникальных индивидуальных идентификаторов в разные даты в разные места.
По сути, я рассчитываю подсчитать количество перемещений людей между локациями.С каждым движением, считающимся как 1. поскольку я только надеюсь посмотреть на движение, первое местоположение не будет считаться как 1, но движение между первой и второй датой будет считаться как 1, и если человек оставался там, где оно было, оно не будет считаться какдвижение.
Пример фрейма данных (за исключением того, что у меня n лиц и n местоположений):
individual <- c(1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3)
locations <- c("L1", "L2", "L2", "L2", "L3", "L2", "L1", "L1", "L2", "L2", "L3", "L3", "L3", "L3", "L1")
date <- c("12/04/2018", "13/04/2018", "14/04/2018", "15/04/2018", "16/04/2018", "12/04/2018", "13/04/2018", "14/04/2018", "15/04/2018", "16/04/2018", "12/04/2018", "13/04/2018", "14/04/2018", "15/04/2018", "16/04/2018")
df <- data.frame(individual, date, locations)
df$individual <- as.factor(df$individual)
df$date <- as.Date(df$date, format = "%d/%m/%Y")
Я пытаюсь создать вывод, который будет выглядеть следующим образом:
B = matrix(
c(0, 1, 1, 2, 0, 0, 0, 1, 0),
nrow=3, ncol=3
)
colnames(B) = c("L1_moved_to", "L2_moved_to", "L3_moved_to")
rownames(B) = c("L1_moved_from", "L2_moved_from", "L3_moved_from")
Я надеюсь затем построить график этой матрицы, но мне трудно создать начальную матрицу в R
РЕДАКТИРОВАТЬ , используя мои данные, когдаЯ смотрю на вывод из df_change_with_lag_drop_initial
я получаю:
individual1 <- c("b1316", "b1316")
location1 <- c(5, 1)
loc_lag1 <- c(4, 5)
df1 <- data.frame(individual1, location1, loc_lag1)
однако, когда вы смотрите на необработанные данные, это выглядит так:
individual2 <- c("b1316", "b1316", "b1316", "b1316", "b1316", "b1316")
location2 <- c(4, 5, 4, 1, 5, 4)
date2 <- c("07/01/2012", "18/02/2012", "04/01/2013", "03/01/2014", "07/01/2016", "18/02/2017")
df2 <- data.frame(individual2, date2, location2)
df2$individual2 <- as.factor(df2$individual2)
df2$date2 <- as.Date(df2$date2, format = "%d/%m/%Y")
df2$location2 <- as.factor(df2$location2)
, так как я упоминалСчет должен показывать 5 движений (1, 1, 1, 1, 1), но вывод loc_lag равен - 1, 0, 1, 0, 0 - поэтому отображаются только движения между новыми местоположениями.