Мне нужно создать новую строку для каждой группы сгруппированного тиббла на основе значений из первой строки каждой группы.
Я пытаюсь использовать do (add_row ()) для создания новой строки и использовать top_n для доступа к значению из первой строки каждой группы.
df = tibble(ID = rep(1:2, each = 2), x = rep(1:2, each = 2), y = seq(1:4))
gb_df <- group_by(df, ID, x)
new_df <- gb_df %>% do(add_row(., ID = top_n(.,1, wt=y)[,"ID"], x = 0, y =
top_n(.,1, wt=y)[,"y"]-1, .before=0))
Однако я получаю следующее сообщение об ошибке.
Error: Columns `ID`, `y` must be 1d atomic vectors or lists
Я хочу следующий вывод.
> new_df
# A tibble: 6 x 3
# Groups: ID [3]
ID x y
<dbl> <dbl> <dbl>
1 1 0 0
2 1 4 1
3 1 4 2
4 2 0 2
5 2 5 3
6 2 5 4