我想要做的是:从一个数据框中获取列,使用 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和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) 目标:评估两个单独的列(下面的 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)