2016-10-26 4 views
1

Я искал здесь высоко и низко, а также пытался дублировать и уникальные функции для того, что я собираюсь спросить, но не смог заставить ничего работать. Предположим, у меня есть фрейм данных с именем компании с переменным состоянием. Когда я разрушаться строками я остался с этим выходом в одном из государственных переменных наблюдений:удалить дубликаты записей в ячейке - R

PA;PA;PA;TX;TX 

Как я мог удалить Dups внутри клетки (и весь вектор по этому вопросу), поэтому она выглядит следующим образом :

PA;TX 

у меня нет никаких проблем, удаление DUP строк, но не могу сделать это для самих клеток.

+1

ли вы, нужно сделать это по строке? Может быть, например, пример того, как ваш кадр данных выглядит так: –

+0

Что, если строка 'PA; TX; PA; TX'? То же самое? –

+0

Кажется лучшей идеей удалить избыточные строки из исходного фрейма данных. – Joe

ответ

2

Это работает для одной строки:

x <- "PA;PA;PA;TX;TX" 

x2 <- strsplit(x, ";") 

x3 <- unlist(x2) 

x4 <- unique(x3) 

x5 <- paste(x4, collapse = ";") 

Если вы хотите сделать это для всего вектора company$state, вы можете свернуть все, что до в один призыв sapply:

sapply(company$state, function(x) paste(unique(unlist(strsplit(x, ";"))), collapse = ";")) 
+0

спасибо ulfelder! Первая часть работает хорошо, но когда я пытаюсь применить ее к вектору, я получаю следующую ошибку: Ошибка в strsplit (x, ";"): несимвольный аргумент. Любая идея, что здесь происходит? – DCRubyHound

+0

Несимвольная аргументация возникает, когда вы пытаетесь запустить 'strsplit' на чем-то отличном от строки, такой как кадр данных или матрица. Вы попробовали версию 'sapply'? – ulfelder

+0

Да, это когда я получил ошибку. – DCRubyHound

Смежные вопросы