'How to nest a tibble with two lists

I have some animal movement data which currently in a tibble with two lists, nested by ID number:

    > trks.all
# A tibble: 24 x 3
      id data                    steps                   
   <int> <list>                  <list>                  
 1    38 <track_xyt [506 x 9]>   <steps_xyt [333 x 11]>  
 2     7 <track_xyt [1,677 x 9]> <steps_xyt [1,106 x 11]>
 3    16 <track_xyt [1,116 x 9]> <steps_xyt [741 x 11]>  
 4    21 <track_xyt [240 x 9]>   <steps_xyt [149 x 11]>  
 5    33 <track_xyt [262 x 9]>   <steps_xyt [151 x 11]>  
 6    11 <track_xyt [586 x 9]>   <steps_xyt [377 x 11]>  
 7     4 <track_xyt [156 x 9]>   <steps_xyt [104 x 11]>  
 8    25 <track_xyt [71 x 9]>    <steps_xyt [42 x 11]>   
 9    14 <track_xyt [710 x 9]>   <steps_xyt [458 x 11]>  
10    26 <track_xyt [226 x 9]>   <steps_xyt [136 x 11]>  
11    23 <track_xyt [562 x 9]>   <steps_xyt [371 x 11]>  
12    31 <track_xyt [441 x 9]>   <steps_xyt [285 x 11]>  
13    22 <track_xyt [651 x 9]>   <steps_xyt [408 x 11]>  
14    34 <track_xyt [812 x 9]>   <steps_xyt [530 x 11]>  
15    24 <track_xyt [500 x 9]>   <steps_xyt [332 x 11]>  
16    29 <track_xyt [1,089 x 9]> <steps_xyt [723 x 11]>  
17    19 <track_xyt [530 x 9]>   <steps_xyt [342 x 11]>  
18    13 <track_xyt [487 x 9]>   <steps_xyt [320 x 11]>  
19    39 <track_xyt [493 x 9]>   <steps_xyt [323 x 11]>  
20     6 <track_xyt [672 x 9]>   <steps_xyt [443 x 11]>  
21    15 <track_xyt [756 x 9]>   <steps_xyt [480 x 11]>  
22    27 <track_xyt [139 x 9]>   <steps_xyt [82 x 11]>   
23     1 <track_xyt [41 x 9]>    <steps_xyt [25 x 11]>   
24    37 <track_xyt [772 x 9]>   <steps_xyt [497 x 11]>  

I unnested by the last list, steps:

trks.all.trim <- trks.all %>% select(id,data,steps) %>% unnest(cols=steps)

I then removed some outlier step lengths:

max(trks.all.trim$sl_)
which(trks.all.trim$sl_==max(trks.all.trim$sl_))
trks.all.trim <- trks.all.trim %>% filter(!row_number() %in% c(5044,5045))
max(trks.all.trim$sl_)
which(trks.all.trim$sl_==max(trks.all.trim$sl_))
trks.all.trim <- trks.all.trim %>%filter(!row_number() %in% c(5175))

I now wish to re-nest this tibble, but I'm not sure how. I tried the below line, but it reassigns my data list, which previously contained tracks_xyt, with the steps data. I wish to return to the original format and not overwrite any data.

trks.all.trim <- trks.all.trim %>% amt::nest(data = -"id", steps = -"id")

> trks.all.trim
# A tibble: 24 x 3
      id data                     steps                   
   <int> <list>                   <list>                  
 1    38 <steps_xyt [333 x 12]>   <steps_xyt [333 x 12]>  
 2     7 <steps_xyt [1,106 x 12]> <steps_xyt [1,106 x 12]>
 3    16 <steps_xyt [741 x 12]>   <steps_xyt [741 x 12]>  
 4    21 <steps_xyt [149 x 12]>   <steps_xyt [149 x 12]>  
 5    33 <steps_xyt [151 x 12]>   <steps_xyt [151 x 12]>  
 6    11 <steps_xyt [377 x 12]>   <steps_xyt [377 x 12]>  
 7     4 <steps_xyt [104 x 12]>   <steps_xyt [104 x 12]>  
 8    25 <steps_xyt [42 x 12]>    <steps_xyt [42 x 12]>   
 9    14 <steps_xyt [458 x 12]>   <steps_xyt [458 x 12]>  
10    26 <steps_xyt [136 x 12]>   <steps_xyt [136 x 12]>  
11    23 <steps_xyt [371 x 12]>   <steps_xyt [371 x 12]>  
12    31 <steps_xyt [285 x 12]>   <steps_xyt [285 x 12]>  
13    22 <steps_xyt [408 x 12]>   <steps_xyt [408 x 12]>  
14    34 <steps_xyt [526 x 12]>   <steps_xyt [526 x 12]>  
15    24 <steps_xyt [332 x 12]>   <steps_xyt [332 x 12]>  
16    29 <steps_xyt [723 x 12]>   <steps_xyt [723 x 12]>  
17    19 <steps_xyt [342 x 12]>   <steps_xyt [342 x 12]>  
18    13 <steps_xyt [320 x 12]>   <steps_xyt [320 x 12]>  
19    39 <steps_xyt [323 x 12]>   <steps_xyt [323 x 12]>  
20     6 <steps_xyt [443 x 12]>   <steps_xyt [443 x 12]>  
21    15 <steps_xyt [480 x 12]>   <steps_xyt [480 x 12]>  
22    27 <steps_xyt [82 x 12]>    <steps_xyt [82 x 12]>   
23     1 <steps_xyt [25 x 12]>    <steps_xyt [25 x 12]>   
24    37 <steps_xyt [497 x 12]>   <steps_xyt [497 x 12]>  

Apologies if this is a simple fix, I am still new to tidyr and haven't been able to find the solution online.



Solution 1:[1]

Try group_by() before you call nest(). Also, I'm not sure what the {amt} package is, but you'll want nest() from {tidyr}

res <- trks.all.trim %>%
  group_by(id, data) %>%
  tidyr::nest()

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Ekholme