变异、交叉和 case_when

问题描述

我在让 mutate、cross 和 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

我的目标是用 4 替换所有 3,并保持其他所有内容相同。我有以下代码:

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 值,我想在原始 tibble 中保持该值。 如何使用跨结构变异保持原始值?

先谢谢你!

解决方法

这个怎么样?

> test %>%
+   mutate(across(a:c,~ case_when(. == 3 ~ 4,TRUE ~ 1 * (.))))
# A tibble: 10 x 3
       a     b     c
   <dbl> <dbl> <dbl>
 1     1     2     4
 2     2     4     4
 3     4     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 %>%
+   replace(. == 3,4)
# A tibble: 10 x 3
       a     b     c
   <int> <int> <int>
 1     1     2     4
 2     2     4     4
 3     4     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
,

base R,我们可以做到

test[test ==3] <- 4
,

这也有效:

a <- c(1:10)
b <- c(2:11)
c <- c(3:12)

tibble(a,b,c) %>% 
  modify(~ ifelse(. == 3,4,.))

# A tibble: 10 x 3
       a     b     c
   <dbl> <dbl> <dbl>
 1     1     2     4
 2     2     4     4
 3     4     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

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...