У меня возникли проблемы с правильной работой mutate, through и case_when, я воссоздал простую версию своей проблемы здесь:
a <- c(1:10)
b <- c(2:11)
c <- c(3:12)
test <- tibble(a, b, c)
# A tibble: 10 x 3
a b c
<int> <int> <int>
1 1 2 3
2 2 3 4
3 3 4 5
4 4 5 6
5 5 6 7
6 6 7 8
7 7 8 9
8 8 9 10
9 9 10 11
10 10 11 12
Моя цель - заменить все тройки на четверки, а все остальное оставить прежним. У меня такой код:
test_1 <-
test %>%
mutate(across(a:c, ~ case_when(. == 3 ~ 4)))
# A tibble: 10 x 3
a b c
<dbl> <dbl> <dbl>
1 NA NA 4
2 NA 4 NA
3 4 NA NA
4 NA NA NA
5 NA NA NA
6 NA NA NA
7 NA NA NA
8 NA NA NA
9 NA NA NA
10 NA NA NA
Это близко, но я получаю значения NA, в которых я хочу сохранить значение в исходном тибле. Как сохранить исходные значения с помощью изменения структуры?
Заранее спасибо!
case_when
, оно возвращаетNA
. Поэтому, если вы не хотитеNA
, когда. != 3
, вам нужно указать это явно с помощьюTRUE ~ .
. - person Ronak Shah   schedule 17.01.2021FALSE ~ .
укажет, когда условие НЕ выполняется. Вы можете понять это, только если вы интерпретируете все предыдущие случаи как операторы if-else, поэтому последний оператор улавливает все условия, которые НЕ были выполнены (и, следовательно, ИСТИНА, если НЕ выполняются). - person Agile Bean   schedule 10.06.2021