Ваш пример:
x = structure(list(id = c(101L, 101L, 101L, 102L, 102L, 102L, 103L,
103L, 103L), wave = c(1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L), variable = c(15L,
17L, 18L, 13L, 14L, 14L, 13L, 15L, 17L)), class = "data.frame", row.names = c(NA,
-9L))
Может быть, что-то вроде этого, если вы не возражаете, dplyr:
set.seed(111)
x %>% group_by(id) %>% sample_n(1) %>%
ungroup() %>% sample_n(n(),replace=TRUE)
# A tibble: 3 x 3
id wave variable
<int> <int> <int>
1 103 3 17
2 101 2 17
3 103 3 17
В первой строке вы группируете по идентификатору, и образец 1 Далее вы разгруппируете, поэтому у вас есть только уникальные идентификаторы. Тогда это вопрос выборки этих строк с заменой. Надеюсь, я понял правильно.