2015-06-06 8 views
1

У меня есть столбец в таблице нижеудаления дубликатов слов в строке

Col1 
    ======================== 
    "No","No","No","No","No" 
    "No","No","No" 
    Yes 
    No 
    "Yes","Yes","Yes","Yes" 
    "Yes","No","Yes", "Yes 

Я пытаюсь удалить дубликаты Нет и Да и создать столбец как этот

  Col1 
    ======================== 
    No 
    No 
    Yes 
    No 
    Yes 
    Yes, No 

Я начал с

 kickDuplicates <- c("No","Yes") 
    # create a list of vectors of place names 
    broken <- strsplit(Table1$Col1, ",") 
    # paste each broken vector of place names back together 
    # .......kicking out duplicated instances of the chosen names 
    Table1$Col1 <- sapply(broken, FUN = function(x) paste(x[!duplicated(x) 
    | !x %in% kickDuplicates ], collapse = ", ")) 

Но это не работает, я получаю ту же самую оригинальную колонку с дубликатами, как и раньше, может кто-нибудь сказать мне, где я g неправильно?

c("\"No\", \"No\", \"No\", \"No\", \"No\", \"No\", \"No\", \"No\"", 
"\"No\", \"No\", \"No\", \"No\", \"No\", \"No\", \"No\", \"No\", \"No\", \"Yes\", \"No\", \"No\", \"No\", \"No\", \"No\", \"No\", \"No\", \"No\", \"No\", \"No\", \"No\", \"No\", \"No\", \"No\", \"No\", \"No\", \"No\", \"No\", \"No\", \"No\"", 
"\"No\", \"No\", \"No\", \"No\", \"No\", \"No\", \"No\", \"No\", \"No\", \"No\", \"No\", \"No\", \"No\", \"No\", \"No\", \"No\", \"No\", \"No\", \"No\", \"No\", \"No\", \"No\", \"No\", \"No\", \"No\", \"No\", \"No\", \"No\"", 
"\"No\", \"No\"", "\"No\", \"No\", \"No\", \"No\", \"No\", \"No\", \"No\", \"No\", \"No\", \"No\", \"No\", \"No\", \"No\", \"No\", \"No\", \"No\", \"No\", \"No\", \"No\", \"No\", \"No\", \"No\", \"No\", \"No\", \"No\", \"No\", \"No\", \"No\", \"No\", \"No\"", 
"No") 
+2

Можете ли вы показать 'dput (Таблица1) '? –

+2

Возможно, вы ищете 'base :: unique', но, как предлагает Дэвид, невозможно сказать, не зная о том, как выглядят ваши данные. –

+0

@DavidArenburg Matthew обновил вопрос с dput из этой колонки – bison2178

ответ

1

Я думаю, что это будет работать в качестве последней строки:

Table1$Col1 <- sapply(broken,function(x) paste(unique(x), collapse=',')) 

Потому что я фанат пакета functional, здесь является эквивалентом:

sapply(broken, Compose(unique, Curry(paste, collapse=','))) 
+1

Не думайте так. Вы видели 'dput'? Довольно перепутал набор данных. Интересно, откуда они его взяли. –

+0

@MatthewLundberg, David На самом деле я изменил 'strsplit (Table1 $ Col1,", ")' на 'strsplit (Table1 $ Col1,", \\ s * ")' и использовал то, что предложил Мэтью, и это сработало – bison2178