2016-10-27 2 views
2

이것은 레이어가 추가 된 this question과 매우 유사합니다. 한 열의 문자열이 다른 열에 있는지 확인하려고합니다. 그러나 일부 행의 경우 열이 비어 있기 때문에 아래의 코드를 실행하면 공백과 일치하기 때문에 'TRUE'가 많이 발생합니다. 공백을 무시하고 문자를 맞추는 방법은 무엇입니까? 내가 원하는 무엇R - 데이터 프레임의 다른 열에서 한 열의 문자열을 찾는 방법 (공백 제외)

word <- c('Hello','','nyc', '') 
keywords <- c('hello goodbye nyc','hello goodbye nyc', 'hello goodbye nyc', 'hello goodbye nyc') 
df <- data.frame(word, keywords, stringsAsFactors=F) 

열 '단어'문자열이 '키워드'사이에 존재하는 경우 나에게 말한다 새 열 (word_exists)를 추가하는 것입니다. 나는 시도 :

df$word_exists <- mapply(grepl, pattern=df$keywords, x=df$word) 

그러나 모든 'TRUE'얻을 나는 '키워드'에 빈 공간을 인식하고 '단어를'비우을 일치되어 있기 때문에 생각합니다. 어떤 제안? 감사합니다.

답변

3

그냥 패턴 문자가 있는지 확인하기 위해 nzchar를 사용

transform(df, word_exists=mapply(grepl, pattern=word, x=keywords) & nzchar(word)) 
# word   keywords word_exists 
# 1 Hello hello goodbye nyc  FALSE 
# 2  hello goodbye nyc  FALSE 
# 3 nyc hello goodbye nyc  TRUE 
# 4  hello goodbye nyc  FALSE 
0

빠른 수정 NA들로 빈 문자열을 대체하는 것입니다. 이 같은 일부 작품 :

df[df$word=="","word"]<-NA 
df$word_exists <- as.logical(mapply(grepl, pattern=df$word, x=df$keywords)) 

     word   keywords word_exists 
1 Hello hello goodbye nyc  FALSE 
2 <NA> hello goodbye nyc   NA 
3 nyc hello goodbye nyc  TRUE 
4 <NA> hello goodbye nyc   NA 
관련 문제