Это краткий пример кадра данных, который я пытаюсь очистить:
L3 <- LETTERS[1:5]
fac<-c("fish", "meat", "chicken", "veg", "shrimp")
set.seed(1)
(d <- data.frame(code = sample(c(11:15)),
upc = sample(c(1:5)), desc = sample(fac),
desc1 = fac, desc2 = sample(fac),
desc3 = fac, desc4 = sample(fac) ))
code upc desc desc1 desc2 desc3 desc4
1 12 5 meat fish chicken fish shrimp
2 15 4 fish meat shrimp meat fish
3 14 2 chicken chicken veg chicken meat
4 13 3 veg veg fish veg veg
5 11 1 shrimp shrimp meat shrimp chicken
Я пытаюсь написать функцию general (используя for loop
и unique()
), который проверяет записи из столбцов с 3 по 7 независимо для каждой строки и сохраняет уникальное значение, которое не повторяется в других столбцах (то есть: если строка содержит рыбу во всех столбцах desc, новая строка должна содержать рыбу только в одномколонка).Более конкретно, желаемый результат:
code upc desc desc1 desc2 desc3 desc4
1 12 5 meat fish chicken shrimp
2 15 4 fish meat shrimp
3 14 2 chicken veg meat
4 13 3 veg fish
5 11 1 shrimp meat chicken