Я не уверен, насколько велик набор данных, с которым вы работаете, но я бы предложил иметь второй набор данных (т.е. data2
), который содержит соответствующие значения segment.parent
вместе с двумя другими переменными. Затем с помощью dplyr
вы можете объединить наборы данных и отфильтровать дубликаты.
library(dplyr)
data3 <- inner_join(data1, data2, by = "segment.parent") %>%
filter(duplicated(data3))
> data3
segment.id Name. segment.parent Name.parent Name.parent.parent
1 1 cat 3 domestic animals animals
2 2 dog 3 domestic animals animals
3 5 cake 7 desert food
4 6 ice-cream 7 desert food
Ваши данные:
data1 <- data.frame(segment.id = 1:9,
Name. = c("cat", "dog", "domestic animals", "animals", "cake", "ice-cream", "dessert", "food", "main-course"),
segment.parent = c(3, 3, 4, NA, 7, 7, 8, NA, 8))
data2 <- data.frame(segment.parent = c(3, 3, 7, 7),
Name.parent = c("domestic animals", "domestic animals", "desert", "desert"),
Name.parent.parent = c("animals", "animals", "food", "food"))