Я только что заметил изменение в поведении nest()
с обновленным тидыром. Ранее, если вы вложили один столбец, он возвращал столбец списка, что облегчало поиск в указанном списке, скажем, для получения «наивысшей» классификации. Например:
tribble(
~a, ~b, ~c, ~class, ~lots_of_other_vars,
1, 100, 150, "lowest", "blah",
1, 100, 150, "medium", "blah",
1, 100, 150, "highest", "blah",
2, 5000, 5500, "lowest", "blah",
2, 5000, 5500, "medium", "blah",
3, 342, 350, "lowest", "blah"
) %>%
nest(class) %>%
mutate(class = case_when(
"highest" %in% data ~ "highest",
"medium" %in% data ~ "medium",
TRUE ~ "lowest"
))
К сожалению, вместо возврата простого списка, новейшая версия функции nest возвращает фрейм данных внутри списка (list(df[,1])
), нарушая мой код.
Конечно, я могу group_by
все остальное, чтобы получить аналогичный результат:
tribble(
~a, ~b, ~c, ~class, ~lots_of_other_vars,
1, 100, 150, "lowest", "blah",
1, 100, 150, "medium", "blah",
1, 100, 150, "highest", "blah",
2, 5000, 5500, "lowest", "blah",
2, 5000, 5500, "medium", "blah",
3, 342, 350, "lowest", "blah"
) %>%
group_by_at(vars(-class)) %>%
mutate(overall_class = case_when(
"highest" %in% class ~ "highest",
"medium" %in% class ~ "medium",
TRUE ~ "lowest"
)) %>%
select(-class) %>%
distinct()
Однако, это упрощенный сценарий, и я бы предпочел сохранить список классов, чтобыпосмотрим позже. Учитывая изменения в nest
, какой самый простой способ получить список значений класса при вызове различных других переменных (т. Е. Какое гнездо использовалось)?
Редактировать
Это то, что я хотел бы добавить столбец со списком всех классов, наблюдаемых для этого сайта:
a b c lots_of_other_vars highest_support
<dbl> <dbl> <dbl> <chr> <chr>
1 1 100 150 blah highest
2 2 5000 5500 blah medium
3 3 342 350 blah lowest