Я ищу способ сопоставить один столбец с другим (но с учетом границ слов). Если совпадения нет, удалите всю строку. Пример: в случае, если нет точного соответствия токена (примечание banana != bananas
) между NODE и SENTENCE (dataframe), удалите строку. Другими словами: if (\b.+\b) in NODE can't be found in SENTENCE, remove the row
.Если значение в столбце A не найдено в столбце B, удалите строку в R
NODE | SENTENCE
-----------------------------------------------------------
banana I am a banana and I like it
banana We ate two bananas yesterday
banana I ate a banana two days ago
coffee Would you like a cup of coffee?
coffee We went by that new coffeeshop the other day
Результат
NODE | SENTENCE
-----------------------------------------------------------
banana I am a banana and I like it
banana I ate a banana two days ago
coffee Would you like a cup of coffee?
Я думал использовать ifelse
, но я не совсем уверен, как применить это.
ifelse(df$NODE==df$SENTENCE,NA,???)
EDIT: учитывая ответ NICO, это не работает для меня. Однако используется \\s
вместо \\b
работ. Разве -
не подразумевает границы слова? Вниз стороной этого является то, что он не будет обнаружить, когда узел находится в начале или в конце предложения (поскольку в этом случае не предшествует или после пространственного характера) .:
r <- c("Het label heeft ook verantwoordelijkheidsgevoel: aan de lancering van B-Camp wordt een Goodwill Project gekoppeld, een fonds dat zijn financiële bijdrage wil leveren ter bestrijding van de aids-plaag.",
"B-Camp koos voor de opvang en verzorging van kinderen besmet met het aids-virus.",
"Hij zei dat hij aids had.",
"Aids in het land?")
s <- c("aids","aids","aids","aids")
d1 <- data.frame(node = s,sentence=r)
matches <- mapply(grep, paste0("(?i)\\s", d1$node, "\\s"), d1$sentence)
to.keep <- sapply(matches, length)>0
(d1 <- d1[to.keep,])
ВЫВОД
node sentence
---------------------------------
aids Hij zei dat hij aids had.
ЗАПЛАНИРОВАННЫЕ
node sentence
----------------
aids Hij zei dat hij aids had.
aids Aids in het land?
@BillWoodger Поскольку только две колонки и пять строк, я не совсем уверен, что вы имеете в виду. –
Ах. Я думал, что я, я, банан и т. Д., Были «колоннами». Значит, вам просто нужно знать, что второе содержит первое, на основе слов? –
@BillWoodger NODE и SENTENCE - это два столбца в 'df'. Да. Мне нужно сохранить строки, в которых столбец предложения содержит точно значение узла. –