尋找過濾掉兩個表中相交的動物(相交條件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