2015-02-05 3 views
0

Я следующий кадром данных:слов в предложениях и их ближайшие соседи в лексиконе

sent <- data.frame(words = c("just right size", "size love quality", "laptop worth price", "price amazing user", 
         "explanation complex what", "easy set", "product best buy", "buy priceless when"), user = c(1,2,3,4,5,6,7,8)) 

Направлено кадр данные привели к:

words       user 
just right size     1 
size love quality    2 
laptop worth price    3 
price amazing user    4 
explanation complex what  5 
easy set      6 
product best buy    7 
buy priceless when    8 

Мне нужно удалить слово в начале из следующего предложения который совпадает с словом в конце предыдущего сообщения.

Я имею в виду, например. у нас есть предложения «just right размер» и «размер love quality», поэтому мне нужно удалить слово размер на втором месте. Затем предложения «ноутбук стоит цена» и «цена замечательный пользователь», поэтому мне нужно удалить слово цена на четвертое место.

Может кто-нибудь мне помочь, я буду признателен за любую вашу помощь. Заранее большое спасибо.

ответ

0

Вы можете извлечь «первое» и «последнее» слово из столбца «слова» для следующей строки и текущей строки, используя sub. Если слова такие же, удалите первое слово из следующего ряда или же сохранить его в качестве такового (ifelse(...))

w1 <- sub(' .*', '', sent$words[-1]) 
w2 <- sub('.* ', '', sent$words[-nrow(sent)]) 
sent$words <- as.character(sent$words) 
sent$words 
#[1] "just right size"   "size love quality"  
#[3] "laptop worth price"  "price amazing user"  
#[5] "explanation complex what" "easy set"     
#[7] "product best buy"   "buy priceless when" 

sent$words[-1] <- with(sent, ifelse(w1==w2, sub('\\w+ ', '',words[-1]), 
        words[-1])) 
sent$words 
#[1] "just right size"   "love quality"    
#[3] "laptop worth price"  "amazing user"    
#[5] "explanation complex what" "easy set"     
#[7] "product best buy"   "priceless when"  
+0

Это работает только для первых двух предложений. Можно ли расширить свой подход для всех предложений в кадре данных? – martinkabe

+0

@Martin Я думал, что ваш ожидаемый результат будет таким же, как я показал на выходе. Можете ли вы показать ожидаемый результат. Если в другом примере есть аномалия, пожалуйста, обновите его в своем сообщении – akrun

+0

@Martin Возможно ли, что в вашей колонке есть пробелы с ведущими/отстающими? – akrun

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