Замена значений в одном столбце NA, основанными на значениях в другом столбце - PullRequest
0 голосов
/ 07 июня 2018

У меня есть следующий набор данных:

A_1 <- c(2, 3, 3, 2, 4)
A_2 <- c(5, 5, 6, 4, 4)
A_3 <- c(9, 9, 8, 7, 6)
B_1 <- c(1, 0, 0, 0, 0)
B_2 <- c(1, 1, 1, 0, 0)
B_3 <- c(0, 0, 0, 1, 1)
df <- cbind(A_1, A_2, A_3, B_1, B_2, B_3)
> df
     A_1 A_2 A_3 B_1 B_2 B_3
[1,]   2   5   9   1   1   0
[2,]   3   5   9   0   1   0
[3,]   3   6   8   0   1   0
[4,]   2   4   7   0   0   1
[5,]   4   4   6   0   0   1

Я хотел бы заменить значения в A_1 на NA в строках, где B_1 == 1, я хотел бы заменить значения в A_2 на NA встроки, где B_2 == 1, и я хотел бы заменить значения в A_3 на NA в строках, где B_3 == 1. Окончательный набор данных должен выглядеть следующим образом:

> df
     A_1 A_2 A_3 B_1 B_2 B_3
[1,]  NA  NA   9   1   1   0
[2,]   3  NA   9   0   1   0
[3,]   3  NA   8   0   1   0
[4,]   2   4  NA   0   0   1
[5,]   4   4  NA   0   0   1

Что является наиболееэффективный способ сделать это для большого набора данных?Спасибо!

1 Ответ

0 голосов
/ 07 июня 2018

Как насчет чего-то подобного ...

df[,1:3][df[,4:6]==1] <- NA

df
     A_1 A_2 A_3 B_1 B_2 B_3
[1,]  NA  NA   9   1   1   0
[2,]   3  NA   9   0   1   0
[3,]   3  NA   8   0   1   0
[4,]   2   4  NA   0   0   1
[5,]   4   4  NA   0   0   1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...