2015-06-26 2 views
1

У меня есть ДФ:GSUB() весь столбец над другой колонкой

df <- data.frame(
    x=c("ABC Inc", "DCV", "FGZ", "JH7 j11"), 
    y=c("ABC - fasjdlkjs", "DCV . (INC) .. kdhkfhksf", "FGZ/qiuwy72gs", "JH7 j11 dhd"), 
    target=c("fasjdlkjs", "inc kdhkfhksf", "qiuwy gs", "dhd") 
) 

Где x является близким, но не точным подмножество y

Я хочу GSUB() все в x к "" (пробел) в y, а также удаление номеров/знаков препинания.

Мой желаемый результат сохраняется в target

Я думал, что это сработало бы, но это не так:

df <- mutate(target = gsub(pattern=x, replacement="", y)) 

EDIT:

Сортировать по: Y - X = Target

ответ

3

Этот (теперь - спасибо @Frank) конвертирует случай tolower. Ниже s строит строку для проверки против из x колонны путем разделения x строки пробелами

df$res <- mapply(function(a, b) { 
    s <- paste(c(unlist(strsplit(as.character(a)," ")), "[[:punct:]]"), collapse="|") 
    tolower(gsub("[[:digit:]]+", " ", gsub(s, "", b))) 
    }, df$x, df$y) 

df 
#   x      y  target    res 
# 1 ABC Inc   ABC - fasjdlkjs  fasjdlkjs  fasjdlkjs 
# 2  DCV DCV . (INC) .. kdhkfhksf inc kdhkfhksf inc kdhkfhksf 
# 3  FGZ   FGZ/qiuwy72gs  qiuwy gs   qiuwy gs 
# 4 JH7 j11    JH7 j11 dhd   dhd    dhd 
+0

Сладкие! ABC и INC все еще остаются. Я бы хотел, чтобы они исчезли. – emehex

+0

О, я вижу, поэтому он должен удалить любые слова, которые находятся в 'x', т.е. не соответствует всей строке, но ее части? – jenesaisquoi

+0

Это правильно! – emehex

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