library(tidyverse)
mytbl <- tibble(a = rep(c(1,1,0,1), 4), b= rep(c(1,0,0,1), 4))
# A tibble: 16 × 2
a b
<dbl> <dbl>
1 1 1
2 1 0
3 0 0
4 1 1
5 1 1
6 1 0
7 0 0
8 1 1
9 1 1
10 1 0
11 0 0
12 1 1
13 1 1
14 1 0
15 0 0
16 1 1
Если я кондиционировать на второй колонке все хорошоУсловный замена с использованием mutate_all dplyr в
dplyr::mutate_all(mytbl, funs(replace(., b != 0, NA)))
# A tibble: 16 × 2
a b
<dbl> <dbl>
1 NA NA
2 1 0
3 0 0
4 NA NA
5 NA NA
6 1 0
7 0 0
8 NA NA
9 NA NA
10 1 0
11 0 0
12 NA NA
13 NA NA
14 1 0
15 0 0
16 NA NA
Но если условие на первом столбце только первый столбец заменяется
dplyr::mutate_all(mytbl, funs(replace(., a != 0, NA)))
# A tibble: 16 × 2
a b
<dbl> <dbl>
1 NA 1
2 NA 0
3 0 0
4 NA 1
5 NA 1
6 NA 0
7 0 0
8 NA 1
9 NA 1
10 NA 0
11 0 0
12 NA 1
13 NA 1
14 NA 0
15 0 0
16 NA 1
I я уверен, что я делаю что-то не так в моем подходе, и я мог бы сделать это не-dplyr, но похоже, что это должно сработать. Вы можете расширить это с помощью большего количества столбцов для аналогичного результата.
Это выглядит странно. Попробуйте с 'if_else' i.e. mytbl%>% mutate_all (funs (if_else (a! = 0,., NA_real _)))' – akrun
Это действительно действительно странно. 'ifelse' не имеет такого поведения, поэтому, если вы просто хотите, чтобы он работал, @akrun вы закрыли. Однако поведение действительно странно. Если я использую 'select', чтобы отменить порядок столбцов, ошибка меняется, поэтому проблема с упорядочением столбцов. Если я использую 'mutate_each (..., everything())', я получаю ту же проблему, но если я использую 'mutate_each (..., b)', он правильно назначает 'NA' в столбце 'b'. Хотелось бы, чтобы у меня был лучший ответ для вас, но я понятия не имею, что происходит. –