与if和is.na交叉突变

编程入门 行业动态 更新时间:2024-10-25 22:35:00
本文介绍了与if和is.na交叉突变的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述 我有下面列出的格式的数据,其中我需要处理的所有变量都是NA或变量的名称,我需要将Nas更改为0,将字符串更改为1。我尝试使用dplyr::across()和ifelse(),但返回的都是1。我目前唯一有效的解决方案是分别对每个变量进行变异。

如何同时将多个变量中的所有NA更改为0,并将所有字符串更改为1?

library(dplyr) color_names <- c("black", "grey", "white", "purple") my_colors <- tribble( ~black, ~grey, ~white, ~purple, NA, "grey", NA, "purple", NA, NA, "white", NA, "black",NA, NA, NA, NA, "grey", NA, NA ) my_colors %>% mutate(across(all_of(color_names), ~ifelse(is.na(cur_column()), 0, 1))) #> # A tibble: 4 x 4 #> black grey white purple #> <dbl> <dbl> <dbl> <dbl> #> 1 1 1 1 1 #> 2 1 1 1 1 #> 3 1 1 1 1 #> 4 1 1 1 1

由reprex package(v0.3.0)于2021-01-13创建

推荐答案

我想您可以这样做:

library(tidyverse) color_names <- c("black", "grey", "white", "purple") my_colors <- tribble( ~black, ~grey, ~white, ~purple, NA, "grey", NA, "purple", NA, NA, "white", NA, "black",NA, NA, NA, NA, "grey", NA, NA ) my_colors %>% mutate(across(.cols = everything(), .fns = ~ ifelse(is.na(.x) == TRUE, 0, 1))) # A tibble: 4 x 4 black grey white purple <dbl> <dbl> <dbl> <dbl> 1 0 1 0 1 2 0 0 1 0 3 1 0 0 0 4 0 1 0 0

更多推荐

与if和is.na交叉突变

本文发布于:2023-07-10 08:24:53,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1089830.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:突变   na

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!