В приведенных ниже данных (включены с dput
), у меня есть повторные наблюдения (широта и долгота) для трех человек (IndIDII).Обратите внимание, что для каждого человека существует разное количество местоположений, и они располагаются по IndYear
.
IndIDII IndYear WintLat WintLong
1 BHS_265 BHS_265-2015 47.61025 -112.7210
2 BHS_265 BHS_265-2016 47.59884 -112.7089
3 BHS_770 BHS_770-2016 42.97379 -109.0400
4 BHS_770 BHS_770-2017 42.97129 -109.0367
5 BHS_770 BHS_770-2018 42.97244 -109.0509
6 BHS_377 BHS_377-2015 43.34744 -109.4821
7 BHS_377 BHS_377-2016 43.35559 -109.4445
8 BHS_377 BHS_377-2017 43.35195 -109.4566
9 BHS_377 BHS_377-2018 43.34765 -109.4892
Я хотел бы filter
и создать новый df
, который состоит из двух последовательных строкза каждый IndIDII
.В моем большом наборе данных все люди имеют как минимум 2 наблюдения (то есть строки), с диапазоном от 2 до 4 наблюдений на человека.Очевидно, что для людей, имеющих только 2 строки, код возвратит только 2 доступные строки.При большем количестве данных строки 1 и 2, или 2 и 3, или 3 и 4 будут выбраны случайным образом.Порядок строк не важен, если они последовательны (то есть могут возвращать 3 и 4 или 4 и 3).
Как всегда, большое спасибо!
Dat <- structure(list(IndIDII = c("BHS_265", "BHS_265", "BHS_770", "BHS_770",
"BHS_770", "BHS_377", "BHS_377", "BHS_377", "BHS_377"), IndYear = c("BHS_265-2015",
"BHS_265-2016", "BHS_770-2016", "BHS_770-2017", "BHS_770-2018",
"BHS_377-2015", "BHS_377-2016", "BHS_377-2017", "BHS_377-2018"
), WintLat = c(47.6102519805014, 47.5988417247191, 42.9737859090909,
42.9712914772727, 42.9724390816327, 43.3474354347826, 43.3555934579439,
43.3519543396226, 43.3476466990291), WintLong = c(-112.720994832869,
-112.708887595506, -109.039964727273, -109.036693522727, -109.050923061224,
-109.482114456522, -109.444522149533, -109.45659254717, -109.489241553398
)), class = "data.frame", row.names = c(NA, -9L))