У меня есть фрейм данных, как показано ниже
test_df <- data.frame("SN" = c("ABC123","ABC123","ABC123","MNO098","MNO098","MNO098"),
"code" = c("ABC1111","DEF222","GHI133","","MNO1123","MNO567"),
"d_time" = c("2220-08-27","2220-05-27","2220-02-27","2220-11-27","2220-02-27",""))
Я пытаюсь сделать 2 вещи
1)создать 2 новых столбца (p_id
, v_id
), убрав алфавиты из столбцов SN
и code
и сохранив только 9 цифр
2) создать столбец отставания (p_vid
) на основе v_id
для каждого человека, отсортированного по его / ее d_time
t_df <- test_df %>% group_by(SN)
t_df %>% arrange((d_time), .by_group = TRUE) ->> sorted_df #sorted based on d_time
transform_ids = function(DF){ # this function is to create person and visit_occurrence ids
DF %>%
mutate(p_id = as.integer(str_remove_all(.$SN,"[a-z]|[A-Z]") %>% #retaining only the numeric part
str_sub(1,9))) %>%
mutate(v_id = as.integer(str_remove_all(.$code,"[a-z]|[A-Z]") %>%
str_sub(1,9))) %>%
group_by(p_id) %>%
mutate(pre_vid = lag(v_id)) %>%
ungroup
}
transform_ids(sorted_df)
Но при этом я сталкиваюсь с приведенной ниже ошибкой
Ошибка в представлении: столбец p_id
должна иметь длину 3 (размер группы) или единицу, а не 6 Ошибка: столбец p_id
должен иметь длину 3 (размер группы) или единицу, а не 6 Кроме того: предупреждающее сообщение: на виду (transform_ids (t_df)): показатьПовторный запуск трассировки с ошибкой отладки: столбец p_id
должен иметь длину 3 (размер группы) или единицу, а не 6
Я ожидаю, что мой вывод будет таким, как показано ниже. В основном я пытаюсь связать каждого v_id
человека с его предыдущим посещением, которое является p_vid