Я хочу изменить определенные значения в одном столбце (B), если определенное значение появляется в другом столбце (A), но в противном случае значения столбца остаются неизменными.Например, в следующей упрощенной версии моих данных я хочу изменить значение в столбце B на «0», если значение в столбце A равно «none», в противном случае я хочу, чтобы значения в столбце B не изменились
df <- data.frame(ID=c(1:4),A=c("1/wk","none","1/mo","1/wk"),B=c("3",NA,NA,"depends"))
> df
ID A B
1 1 1/wk 3
2 2 none <NA>
3 3 1/mo <NA>
4 4 1/wk depends
Я пробовал это
df$B <- ifelse(df$A == "none","0",df$B)
> df
ID A B
1 1 1/wk 1
2 2 none 0
3 3 1/mo <NA>
4 4 1/wk 2
Хотя это меняет идентификатор 2 на «0» в столбце B (который я хочу), он также меняет другие значения в столбце B. Я хочу, чтобы мой выводчтобы выглядеть так:
> df
ID A B
1 1 1/wk 3
2 2 none 0
3 3 1/mo <NA>
4 4 1/wk depends
Я также пытался использовать if () {}, но не могу понять, как его использовать, когда задействовано несколько столбцов
Я не особоо том, какую функцию использовать (хотя я предпочитаю ответы, которые используют базу R).PS - хотя я нашел похожие вопросы по stackoverflow, ни один из ответов не сработал для меня.