У меня есть фрейм данных и вектор, и я хочу разделить фрейм данных на несколько списков, если значение появляется в векторе.
Например, вот вектор:
foods_to_serve <- c("Sweets", "Bitter")
Вот кадр данных:
library(tidyverse)
problem <- tibble(name = c("Angela", "Claire", "Justin", "Rachel"),
favfood1 = c("Sweets", "Salty", "Sweets", "Salty"),
favfood2 = c("Bitter", "Sweets", "Salty", NA),
favfood3 = c("Salty", NA, NA, NA),
hunger = c("high", "high", "low", "low"))
Я хочу, чтобы R разбил это на списки, включающие только те продукты, которые указаны в списке продуктов для подачи.Кроме того, люди могут входить в несколько списков, а некоторые могут быть полностью исключены.
Чтобы быть более конкретным, я бы получил список, который выглядит следующим образом:
[1]
Food_to_serve name hunger
Sweets Angela high
Sweets Claire high
Sweets Justin low
[2]
Food_to_serve name hunger
Bitter Angela high
Я знаю, что яМожно использовать split (), но я не уверен, как сделать так, чтобы он повторялся по этим различным столбцам.Я думаю, что мне может понадобиться использовать функцию pmap из purrr, но я не уверен.Я не возражаю, если окончательные списки сохранятся, если что-то было их первым, вторым или третьим любимым продуктом, но мне нужно, чтобы остальная информация была включена в исходный фрейм данных.Если возможно, было бы полезно аккуратное решение.
Я также пытался использовать% в%, но я также не знаю, как заставить его проходить через несколько столбцов.