【问题标题】:Mutate across columns and replace entries with case_when跨列变异并用 case_when 替换条目
【发布时间】:2022-06-15 22:06:07
【问题描述】:

当列和单元格符合条件时,我正在尝试更改单元格条目。

数据:

df <- data.frame(a=c("a", "ab", "ac"), b=c("b", "bc", NA), c=c("c", NA, "cda"))
> df
   a    b    c
1  a    b    c
2 ab   bc <NA>
3 ac <NA>  cda

尝试:

> df %>% mutate(across(matches("b", "c"), ~case_when(. %in% "c" & is.na(.) ~ "here", TRUE ~ as.character(.))))
   a    b    c
1  a    b    c
2 ab   bc <NA>
3 ac <NA>  cda

寻找这个:

   a    b    c
1  a    b    c
2 ab   bc  here
3 ac  here  cda

【问题讨论】:

    标签: r dataframe dplyr


    【解决方案1】:

    只需声明across中的变量,即

    df %>% 
     mutate(across(c('b', 'c'), ~replace(., is.na(.), 'here')))
    
       a    b    c
    1  a    b    c
    2 ab   bc here
    3 ac here  cda
    

    【讨论】:

      【解决方案2】:

      试试这个:

      library(tidyverse)
      
      data.frame(a=c("a", "ab", "ac"), b=c("b", "bc", NA), c=c("c", NA, "cda")) |> 
        mutate(across(everything(), ~if_else(is.na(.), "here", .)))
      #>    a    b    c
      #> 1  a    b    c
      #> 2 ab   bc here
      #> 3 ac here  cda
      

      reprex package 创建于 2022-05-11 (v2.0.1)

      【讨论】:

        【解决方案3】:

        baseR:

        df[, c("b", "c")][is.na(df[, c("b", "c")])] <- "here"
        

        【讨论】:

          猜你喜欢
          • 2017-04-08
          • 2017-09-27
          • 2019-10-19
          • 1970-01-01
          • 2021-09-20
          • 1970-01-01
          • 2021-08-13
          • 2016-12-03
          • 1970-01-01
          相关资源
          最近更新 更多