2014-03-02 8 views
1

특정 단어 또는 특정 단어 시퀀스가 ​​포함 된 데이터 프레임의 행을 제거하려고합니다. 예를 들면 :R에서 특정 단어를 포함하는 데이터 프레임의 행을 제거하는 방법은 무엇입니까?

mydf <- as.data.frame(read.xlsx("C:\\data.xlsx, 1, header=T")) 
head(df) 
#  NO ARTICLE  
# 1 34 New York Times reports blabla 
# 2 42 Financial Times reports blabla 
# 3 21 Greenwire reports blabla 
# 4 3 New York Times reports blabla 
# 5 46 Newswire reports blabla 

data.frame에서 문자열 "뉴욕 타임스"와 "뉴스 와이어"를 포함하는 행을 제거 할. %in% 또는 grep을 사용하여 다른 접근 방식을 시도했지만이 방법을 사용하는 방법을 잘 모르겠습니다!

어떻게하면됩니까?

+8

'안양'등 @Thomas이 – Thomas

+1

[grepl ('뉴욕 타임즈', 안양 $ 조),!] - 왜 대답으로 게시하지 않습니다? – jlhoward

답변

3

내 의견에 따르면 지정된 문자열이 벡터에서 발견되면 논리 값을 반환하는 grepl을 사용하십시오. 귀하의 경우에는 다음과 같이하십시오 :

df[!grepl('New York Times',df$Article),] 

트릭을해야합니다.

+0

어떤 벡터에 관심있는 문자열이 들어있는 행을 제거하려면 어떻게 일반화 할 수 있습니까? 즉 'df [! grepl ('New York Times ', df)]와 같은 것' –

+0

@DavidPell 변수가 모두 문자인지 여부에 따라 조금씩 다릅니다. 대답이 너무 길어서 새로운 질문을 게시하는 것이 좋습니다. – Thomas

+0

완료 - http://stackoverflow.com/questions/36645801/remove-rows-containing-string-in-any-vector-in-data-frame –

0
# Sample Data 
NO <- c(34, 42, 21, 3) 
ARTICLE <- c('New York Times reports blah blah fake news', 
      'Financial Times blah blah', 
      'Fox News has been very nice to me', 
      'Newswire reports blah blah') 
df <- data.frame(NO, ARTICLE) 

# Create List of Exclusion Phrases 
fakenews <- c('New York Times', 'Newswire') 

# Exclude 
very.nice.to.me <- df[ !grepl(paste(fakenews, collapse="|"), df$ARTICLE),] 
+1

완벽하게 작동합니다. 그리고 250,000 개가 넘는 행과 200 개 이상의 다른 단어가 제외되어 있어도 번개처럼 빠르게 진행됩니다. – bonna

관련 문제