Как заменить значения из переменных A и B на NA, если значение A ниже, чем значение B - PullRequest
0 голосов
/ 10 февраля 2020

Как заменить значения переменной A и переменной B на NA, если значение переменной A меньше соответствующего значения в переменной B. Это в R. Я знаю, что мне нужно использовать какой-то если-еще заявление, но я потерялся.

Допустим, у меня есть фрейм данных с 2 переменными, A и B. И каждый раз, когда значение переменной A ниже, чем значение переменной B, я хочу, чтобы значения (из переменных A и B) были заменены с NA.

1 Ответ

0 голосов
/ 10 февраля 2020
set.seed(123)
df <- data.frame(A = runif(5), B = runif(5))
df

          A         B
1 0.2875775 0.0455565
2 0.7883051 0.5281055
3 0.4089769 0.8924190
4 0.8830174 0.5514350
5 0.9404673 0.4566147

Индексирование строк, где df$A < df$B равно TRUE, и установка значений столбцов c("A", "B") в c(NA, NA)

df[df$A < df$B, c("A", "B")] <- c(NA, NA)

df теперь:

          A         B
1 0.2875775 0.0455565
2 0.7883051 0.5281055
3        NA        NA
4 0.8830174 0.5514350
5 0.9404673 0.4566147

Редактировать: Обработка дел NA

set.seed(123)
df <- data.frame(A = runif(5), B = runif(5))
df[c(1, 5), 1] <- NA
df[c(1, 4), 2] <- NA
df

          A         B    
1        NA        NA
2 0.7883051 0.5281055
3 0.4089769 0.8924190
4 0.8830174        NA
5        NA 0.4566147

Установить A и B на NA:

df[is.na(df$A) | is.na(df$B) | df$A < df$B, c("A", "B")] <- c(NA, NA)


          A         B
1        NA        NA
2 0.7883051 0.5281055
3        NA        NA
4        NA        NA
5        NA        NA

или :

Игнорировать строки с NA в A and/or B`:

set.seed(123)
df <- data.frame(A = runif(5), B = runif(5))
df[c(1, 5), 1] <- NA
df[c(1, 4), 2] <- NA
df

df[!is.na(df$A) & !is.na(df$B) & df$A < df$B, c("A", "B")] <- c(NA, NA)


          A         B
1        NA        NA
2 0.7883051 0.5281055
3        NA        NA
4 0.8830174        NA
5        NA 0.4566147
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...