Есть ли способ сделать это более эффективно? Я хочу создать столбец типа элемента. У каждого участника разное количество предметов, так что это действительно сложно. Вот игрушечный пример моих данных
structure(list(id = c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L), condition = c("high", "high", "high", "high", "high",
"high", "high", "high", "medium", "medium", "medium", "medium",
"medium", "medium", "medium", "low", "low", "low", "low", "low",
"low", "low", "low", "low", "low", "low", "low", "low", "low",
"low", "high", "high", "high", "high", "high", "high", "high",
"medium", "medium", "medium", "medium", "medium", "medium", "medium"
), item = c("abcde", "bcdef", "cdefgh", "defgh", "efghi", "fghijk",
"ghijkl", "hijklm", "1234", "2345", "3456", "4567", "5678", "6789",
"7890", "onion", "celery", "tomato", "carrot", "green bean",
"lettuce", "garlic", "abcde", "bcdef", "cdefgh", "defgh", "efghi",
"fghijk", "ghijkl", "hijklm", "onion", "celery", "tomato", "carrot",
"green bean", "lettuce", "garlic", "1234", "2345", "3456", "4567",
"5678", "6789", "7890")), row.names = c(NA, -44L), class = c("tbl_df",
"tbl", "data.frame"))
Это то, что я сделал до сих пор, но это кошмар, потому что у меня есть более ста различных предметов:
df$subs <- 0
df$subs[df$item=="abcde"] <- "A"
df$subs[df$item=="bcdef"] <- "A"
df$subs[df$item=="cdefg"] <- "A"
df$subs[df$item=="defgh"] <- "A"
df$subs[df$item=="efghi"] <- "A"
df$subs[df$item=="12345"] <- "B"
df$subs[df$item=="23456"] <- "B"
df$subs[df$item=="34567"] <- "B"
df$subs[df$item=="45678"] <- "B"
df$subs[df$item=="56789"] <- "B"
df$subs[df$item=="onion"] <- "C"
df$subs[df$item=="celery"] <- "C"
df$subs[df$item=="tomato"] <- "C"
df$subs[df$item=="carrot"] <- "C"
df$subs[df$item=="green bean"] <- "C"
Есть ли более быстрый способ сделать это с Tidyverse?