2017-02-06 3 views
0

В следующих данных выборки:Условное Назначению Значения в R

keyword <- c("advertising plan","advertising budget", 
     "marketing plan", 
     "marketing budget", 
     "hr plan", 
     "hr budget", 
     "operation plan", 
     "operation budget") 
indicator <- c(1,0,1,0,0,1,1,1) 
df <- cbind(keyword,indicator) 

Мне нужно создать новую переменный «Topic». Я назначу текст «Advertising» в ячейку, если ключевым словом является «advertising plan» и «advertising budget»; «Marketing» в ячейку, если ключевым словом является «marketing plan» и «marketing budget».

Я пытался использовать

df$Topic[which(df$keyword == c("advertising plan","advertising budget") <- "Advertising".

Но это не сработало. Любая помощь высоко ценится!

ответ

1
#Convert to dataframe if it isn't already 
df = as.data.frame(df, stringsAsFactors = FALSE) 
#Extract first word of the keyword as the topic 
df$Topic = sapply(strsplit(df$keyword," "),function(x) x[1]) 
#Set all values other than marketing and advertising to blank (or NA if you want) 
df$Topic[df$Topic != "marketing" & df$Topic != "advertising"] = "" 
1
keyword <- c("advertising plan","advertising budget", 
      "marketing plan", 
      "marketing budget", 
      "hr plan", 
      "hr budget", 
      "operation plan", 
      "operation budget") 
indicator <- c(1,0,1,0,0,1,1,1) 
df <- data.frame(keyword, indicator, stringsAsFactors = FALSE) 

df[df$keyword %in% c("advertising plan", "advertising budget"), "Topic"] = "Advertising" 
df[df$keyword %in% c("marketing plan", "marketing budget"), "Topic"] = "Marketing" 

или, более гибкий подход:

df[grepl("advertising plan|advertising budget", df$keyword), "Topic"] = "Advertising" 
df[grepl("marketing plan|marketing budget", df$keyword), "Topic"] = "Marketing" 

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

  • Нет связанных вопросов^_^