首页 > 解决方案 > 如果在 R 时不符合标准,如何保持单元格的原始值?

问题描述

我希望变异在所有单元格值上运行(编辑:在具有多列的 DF 中),如果它不符合 case_when 的任何标准,则保留原始数据。例如 mutate(~case_when(.=="hi" ~1, .=="hello"~2, T~(keep original value) ))

标签: rcase-when

解决方案


如果您只运行case_when1 列,则可以在TRUE ~

library(dplyr)

df %>%
  mutate(cyl = case_when(col == 'hi' ~ 1, 
                         col == 'hello' ~ 2, 
                         TRUE ~ col))

如果您使用mutate_at/对多个列运行此操作,across则可以使用.

df %>%
  mutate(across(c(a, b), ~case_when(.== "hi" ~ 1, 
                                    .== "hello"~2, 
                                    TRUE ~ .)))

推荐阅读