R обновить столбец data.frame на основе нескольких условий, проблема использования ifelse - PullRequest
0 голосов
/ 10 октября 2018

Замечено, что следующий код не работает.Но это выражает мою главную цель.

if(df$col_1 > 2 & df$col_1 > 3) {df$col_4 = value_1}  

Затем я попытался ifelse

df$col_4 = ifelse(df$col_1 > 2 & df$col_1 > 3, value_1, 0)

Однако проблема с использованием ifelse заключается в том, что исходное значение df$col_4 будетноль, пока результат (df$col_1 > 2 & df$col_1 > 3) FALSE.

Первоначальное значение df$col_4 должно храниться там, где (df$col_1 > 2 & df$col_1 > 3) == FALSE.

Я тоже не предпочитаю nested ifelse, потому что это похоже на беспорядок, а не на чтение.

Есть ли способ, подобный sql update, значение будет обновляться только тогда, когда множественные условия приводят к TRUE?

1 Ответ

0 голосов
/ 10 октября 2018

Как прокомментировано, вы можете использовать:

df$col_4 = ifelse (df$col_1> 2 & df$col_1 >3, value_1, df$col_4 )

Одна потенциальная проблема, связанная с этим, заключается в том, что вы обновляете df$col_4 на лету, что может усложнить отслеживание ошибок / неправильного поведения.Я бы посоветовал вам сохранить результаты в новом столбце (может быть за пределами df, если вы не хотите иметь много новых столбцов).Я бы даже добавил вектор df$condition <- df$col_1> 2 & df$col_1>3.Таким образом, вы можете контролировать, что результаты, что вы хотите, с первого взгляда.

df$condition <- df$col_1> 2 & df$col_1>3
df$col_5 = ifelse (df$condition, value_1, df$col_4 )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...