Ищите фильтрацию животных, которые находятся в обеих таблицах (условие пересечения 1), и имеют одинаковые размеры в пределах одной категории в разных таблицах (условие пересечения 2). Знайте эффективный способ кодирования этого - например, с dplyr?Условные пересечения в R
library(dplyr)
animal1 <- data.frame(type = c("cat", "dog", "dog","bird", "elephant"),
size = c("small","large","small", "medium", "large"), tableName = rep("animal1",5), stringsAsFactors = F)
# type size tableName
# 1 cat small animal1
# 2 dog large animal1
# 3 dog small animal1
# 4 bird medium animal1
# 5 elephant large animal1
animal2 <- data.frame(type = c("elephant", "dog", "dog", "elephant", "elephant"),
size = c("medium","large","large", "small", "large"),
tableName = rep("animal2",5), stringsAsFactors = F)
# type size tableName
# 1 elephant medium animal2
# 2 dog large animal2
# 3 dog large animal2
# 4 elephant small animal2
# 5 elephant large animal2
rbindAnimal <- rbind(animal1, animal2)
# type size tableName
# 1 cat small animal1
# 2 dog large animal1
# 3 dog small animal1
# 4 bird medium animal1
# 5 elephant large animal1
# 6 elephant medium animal2
# 7 dog large animal2
# 8 dog large animal2
# 9 elephant small animal2
# 10 elephant large animal2
# Intersection across both tables
intersectType <- intersect(rbindAnimal %>% filter(tableName == "animal1") %>% select(type),
rbindAnimal %>% filter(tableName == "animal2") %>% select(type))
# type
# 1 elephant
# 2 dog
rbindAnimal <- rbindAnimal[which(rbindAnimal$type %in% intersectType$type),]
# type size tableName
# 2 dog large animal1
# 3 dog small animal1
# 5 elephant large animal1
# 6 elephant medium animal2
# 7 dog large animal2
# 8 dog large animal2
# 9 elephant small animal2
# 10 elephant large animal2
# Needs to return row numbers! Here: 2,5,7,8, and 10
# type size tableName
# 2 dog large animal1
# 5 elephant large animal1
# 7 dog large animal2
# 8 dog large animal2
# 10 elephant large animal2
Нужный выход не Чисто. вы пытаетесь объединиться по типу и размеру или пытаетесь сохранить только наблюдения размера по типу, которые не присутствуют в обоих файлах data.frames? – lmo
Хорошая точка! Я думаю, что слияние по типу и размеру - это то, к чему я стремился. В последних строках отображается желаемый результат - где значения индекса строки могут допускать обратную фильтрацию. – eyeOfTheStorm