当前位置: 首页 > 知识库问答 >
问题:

与ifelse和is.na交叉突变

高经艺
2023-03-14

我有如下所述格式的数据,其中我需要使用的所有变量要么是NA要么是变量的名称,并且我需要将NAs更改为0,将字符串更改为1。我尝试使用dplyr::across()ifelse(),但返回的都是1。我现在唯一有效的解决方案是对每一个变量进行单独的变异。

如何同时跨多个变量将所有nas更改为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

共有1个答案

苗冯浩
2023-03-14

我想你可以这样做:

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
 类似资料:
  • 我有一个数据帧,它看起来像: 我想创建一个新的变量来识别一个网站是否使用6122喷墨作为我的dplyr管道的一部分。新变量应该包含Y或N。我使用了下面的代码: 我希望得到如下输出: 然而,我反而得到了这样的输出: 任何帮助都将不胜感激。

  • 我有一个名称重复的数据集。如果名称重复,我想创建一个值为1(TRUE)或0(FALSE)的新列。 这是我使用的代码: 或者 然而,我得到了上面可以看到的错误。 另一个想法是使用group_by,然后计算计数。喜欢: 但是,它不能返回原始数据帧后group_by

  • 我正在研究一个数据帧(昏暗: 10,155乘33)。几排 对于变量age_band,我想使用tidyverse函数separate(),mutate() 将年龄段分成两列a1 我正在使用以下代码: 错误:列必须是长度10155(行数)或1,而不是0请建议可以做什么。当我在ifelse语句中运行没有'$'的代码时,我得到一个错误对象'a1'没有找到,而通常,我们在使用链接运算符时不需要'$' 也是

  • 所以伙计们, 我试图玩一点Javac交叉编译与蚂蚁和终端。本地和集成环境,我有同样的问题,非常基本的问题。 我在linux终端(以及windows和cmd上的cygwin)上运行此命令: Main.java只有System.out.println. 我收到了错误信息: 我在本地windows计算机上的配置大致相同,结果完全相同。 我的理解是,交叉编译就是使用更高版本的jdk编译一些与更高版本的jd

  • 我使用的是Querydsl 2.9、Spring Data JPA 1.3.0和Hibernate JPA 2 API 1.0版。我试图在两个表和之间进行简单的连接,连接到列。由于某些原因,Hibernate执行的查询中总是有一个额外的。这些表格如下所示: 但是,实际运行的查询是这样的: 请注意结尾处额外的。我意识到,如果在上执行可以得到正确的结果,但我不希望在不需要的情况下增加的额外开销。我尝试

  • 我正在训练一个数据集,然后在其他数据集上测试它。