2016-12-18 3 views
-1

У меня есть данные R, как следующее:R: как проверить, есть несколько имен с заданным идентификатором в dataframe

id = c(1,1,1,2,2,4,4,3,3,3) 
buyernames = c("ann","ann","bo","celine","celine","mary","lily","john","john","john") 
data = cbind(id,buyernames) 
#id buyernames 
#[1,] "1" "ann"  
#[2,] "1" "ann"  
#[3,] "1" "bo"  
#[4,] "2" "celine" 
#[5,] "2" "celine" 
#[6,] "4" "mary"  
#[7,] "4" "lily"  
#[8,] "3" "john"  
#[9,] "3" "john"  
#[10,] "3" "john"  

ID числовой. Я хочу знать, есть ли идентификаторы, связанные с разными именами. Если да, то какие идентификаторы и имена.

требуемый выход - это данные, как следующее:

id buyernames 
    1 ann 
    1 bo 
    4 mary 
    4 lily 

Любое понимание будет высоко оценен.

ответ

0

Функция unique может устранить повторяющиеся строки, а функция duplicated может использоваться для идентификации дубликатов идентификаторов после удаления повторяющихся строк. Таким образом, должно работать следующее:

id = c(1,1,1,2,2,4,4,3,3,3) 
buyernames = c("ann","ann","bo","celine","celine","mary","lily","john","john","john") 
data = cbind(id,buyernames) 

D <- unique(data.frame(data))   # get unique rows 
dupids <- with(D, id[duplicated(id)]) # duplicate ids 
subset(D, id %in% dupids)    # rows for duplicate ids