2017-06-01 41 views
2

我需要檢查A中變量PPT中每個唯一值的元素數是否等於B中每個PPT中唯一值的元素數,以及是否存在任何唯一的僅A或僅B.如何比較唯一值的計數

例如值:

PPTa <- c("ppt0100109","ppt0301104","ppt0100109","ppt0100109","ppt0300249","ppt0100109","ppt0300249","ppt0100109","ppt0504409","ppt2303401","ppt0704210","ppt0704210","ppt0100109") 
CNa <- c(110,54,110,110,49,10,49,110,409,40,10,10,110) 
LLa <- c(150,55,150,150,45,15,45,115,405,45,5,15,50) 
A <-data.frame(PPTa,CNa,LLa) 

PPTb <- c("ppt0100200","ppt0300249","ppt0100109","ppt0300249","ppt0100109","ppt0764091","ppt2303401","ppt0704210","ppt0704210","ppt0100109") 
CNb <- c(110,54,110,110,49,10,49,110,409,40) 
LLb <- c(150,55,150,150,45,15,45,115,405,45) 
B <-data.frame(PPTb,CNb,LLb) 

在這種情況下,我們有發生一定量的時候,這些唯一值:

A$PPTa  TIMES 
"ppt0100109" 6 
"ppt0301104" 1 
"ppt0300249" 2 
"ppt0504409" 1 
"ppt2303401" 1 
"ppt0704210" 2 

B$PPTb  TIMES 
"ppt0100200" 1 
"ppt0300249" 2 
"ppt0100109" 3 
"ppt0764091" 1 
"ppt2303401" 1 
"ppt0704210" 2 

如果唯一值存在於A和B中具有相同數量的元素,那麼我想創建一個新的矩陣(或任何可以建議的值),值爲1(如果它存在於數據框A和B但元素的數量不同,如果值僅存在於兩個數據框中的一箇中,則值爲2。 喜歡的東西:

A$PPTa  TIMES OUTPUT 
"ppt0100109" 6  1 
"ppt0301104" 1  2 
"ppt0300249" 2  0 
"ppt0504409" 1  2 
"ppt2303401" 1  0 
"ppt0704210" 2  0 

B$PPTb  TIMES OUTPUT 
"ppt0100200" 1  2 
"ppt0300249" 2  0 
"ppt0100109" 3  1 
"ppt0764091" 1  2 
"ppt2303401" 1  0 
"ppt0704210" 2  0 

回答

2

您可以使用嵌套ifelse聲明,

ifelse(do.call(paste0, A) %in% do.call(paste0, B), 0, ifelse(A$PPTa %in% B$PPTb, 1, 2)) 
#[1] 1 0 2 2 0 0 
ifelse(do.call(paste0, B) %in% do.call(paste0, A), 0, ifelse(B$PPTb %in% A$PPTa, 1, 2)) 
#[1] 1 2 0 0 2 0