小编tal*_*ble的帖子

多个 ifelse 语句和 dplyr 管道,无法识别第二个对象

我想要做的是:从一个数据框中获取列,使用 ifelse 语句重新编码它们,然后将它们移动到一个新的数据框中,同时使用 dplyr 和管道一次性完成。

问题:该代码仅适用于一列,但一旦 R 在同一行代码中遇到多于一列,我就会遇到问题。第二列无法识别,R 抛出错误。我收到以下错误:

mutate_impl(.data, dots) 中的错误:评估错误:找不到对象“var2_orig”。

关于为什么会这样的任何想法?在不使用 ifelse 语句的情况下,可能还有一种更简单的方法。我也对这方面的建议持开放态度,但我仍然很好奇如何使用 ifelse 执行此操作以及为什么会出现不止一列的错误。非常感谢。

示例代码:

library(tidyverse)

# creating fake data set
df_orig <- data_frame(var1_orig = sample(1:3, 50, replace = T),
                  var2_orig = sample(-2:2, 50, replace = T))

# works for one var (recoding 3's as NA, 2's as 1, and 1's as 0):

df_new <- df_orig %>%
  as_tibble() %>%
  transmute(var1_new = ifelse(var1_orig == 3, NA, ifelse(var1_orig == 
  2, 1, ifelse(var1_orig == 1, 0, var1_orig))))

# and works …
Run Code Online (Sandbox Code Playgroud)

r dplyr

3
推荐指数
2
解决办法
4514
查看次数

在R中分解一个长正则表达式

问题:我正在使用R和stringr,并且使用“或”运算符保存了一个对象并与stringr一起使用时,正则表达式非常长。如何在R中将其拆分为多行,这样就不必在源代码编辑器中一直向右滚动?当我尝试逗号时,只会识别第一行。这个问题的大多数答案都针对其他编程语言(即非R)。

regex_of_sites <- "side|southeast|north|computer|engineer|first|south|pharm|left|southwest|level|second|thirteenth"
Run Code Online (Sandbox Code Playgroud)

regex r

3
推荐指数
1
解决办法
165
查看次数

创建新列时如何处理 ifelse 中的 NA

目标:评估两个单独的列(下面的 var1 和 var2),并使用 ifelse 语句创建第三个复合列(下面的 var3)。例如,我想检查每一列,如果它们都包含 NA,我需要在第三列 var3 中包含 NA。如果 var1 或 var2 包含 -1、0 或 1,我希望它位于 var3 中

问题:显示所有 NA。我知道评估 NA 时存在一些愚蠢的问题,但我错过了它。

期望的输出:

var1  var2  var3
  1    NA    1
  NA   1     1
  NA   NA    NA
  NA   -1    -1
  0    NA    0
Run Code Online (Sandbox Code Playgroud)

可重现的例子:

library(tidyverse)

df <- data.frame(var1 = c(1, 1, NA, NA, 0),
                  var2 = c(NA, 1, NA, -1, NA))

df_addvar3 <- df %>%
    mutate(var3 = ifelse(var1 == NA | var2 == NA, NA,
                      ifelse(var1 == -1 | var2 …
Run Code Online (Sandbox Code Playgroud)

if-statement r na

1
推荐指数
1
解决办法
8673
查看次数

标签 统计

r ×3

dplyr ×1

if-statement ×1

na ×1

regex ×1