2014-07-01 2 views
1

Я пытаюсь заменить все значения символов, которые не равны «А» или «Б», в «»R - как условно заменить строки символов с отсутствующими

df$var <- as.character(df$var) 
df$var[df$var != "A" | "B"] <- c("") 

Я уверен, что есть простое решение для этого ... однако мой новичок показывается, и я не могу найти тему справки (здесь или иначе).

Любая помощь?

+1

Я не буду отправлять его в качестве ответа, потому что он слишком похож на другой ответ, но вы были почти там. Всегда лучше работать с частью данных, чем со всеми, поэтому вы можете сделать это: 'df $ var [! Df $ var% in% c (" A "," B ")] <-" " 'или (как в комментарии @nrussells)' df $ var [df $ var! = "A" & df $ var! = "B"] <- "" ' –

ответ

3
df$var <- ifelse(!(df$var %in% c("A","B")), "", df$var) 
+0

как это лучше? –

+1

Потому что 'df $ var [df $ var! =" A "| «B»] 'не является допустимой командой R. Это должно быть 'df $ var [df $ var! =" A "& df $ var! =" B "]'. Или один из многих других способов сделать это в R; но 'df $ var! =" A "| «B» 'не является законным. – nrussell

+0

Конечно, это не так, но лучше работать на части вектора, чем на всем этом. Ваш пример намного лучше, чем ответ –

2

Альтернативой является использование gsub:

x <- unlist(strsplit('ABCDEABCDE', '')) # example vector 
gsub('[^AB]', '', x) 
# [1] "A" "B" "" "" "" "A" "B" "" "" "" 
Смежные вопросы