ifelse中的条件:多列/变量中的值

时间:2018-01-11 11:52:19

标签: r if-statement dplyr operators conditional-statements

这可能很简单:

我喜欢在variableB或variableA 中创建条件“ value。”

这有什么作用:

var1 %in% c("value1", "value2")条件:var1是value1或value2

var2 | var3 %in% 1条件:var1为1或var2为1(var1和var2为0/1的假人)

有了这些,我可以解决重复的代码:

var1 == "value1" | var1 == "value2"

var2 == 1 | var3 == 1

我想要替换的是

var4 == "value1" | var5 == "value1"

可重复的例子:

(我遗漏了var1-var3)

var4 <- c("value1", "valuex")
var5 <- c("valuey", "value1")

df <- data.frame(var4, var5)

我使用dplyr包中的case_when(),但它也应该与基本R ifelse一起使用。

df <- df %>% mutate(newvar= case_when( CONDITION HERE ~ "value1", 
                     TRUE~"else"))

如果在var1或var2中有value1,则新变量应为value1

(关于stackoverflow的第一个问题。抱歉任何不明确。)

2 个答案:

答案 0 :(得分:2)

如果我们需要检查&#39; value1&#39;存在于每行的任何一列中,使用filter_allany_vars

df %>%
  filter_all(any_vars(. =="value1"))

对于特定的列子集,请使用filter_at

df %>%
   filter_at(vars(matches("var\\d+")), any_vars(.== "value1"))

要根据多列比较创建二进制列,请使用mutate_at(如果需要比较所有列,则为mutate_all),reduce为单个逻辑/整数向量并将其绑定为列以在数据集

中创建新列
library(dplyr)
library(purrr)
df %>% 
  mutate_at(vars(matches("var\\d+")), funs(.=="value1")) %>% 
  reduce(`|`) %>%
  as.integer %>%
  bind_cols(df, new_var = .)

答案 1 :(得分:1)

Google.Apis.Requests.RequestError Calendar usage limits exceeded. [403] Errors [ Message[Calendar usage limits exceeded.] Location[ - ] Reason[quotaExcee ded] Domain[usageLimits] ] 相当于var recurringEvent = calendarService.Events.Insert(newEvent, "primary"); recurringEvent.SendNotifications = true; //exponential back-off Retry.Do(() => recurringEvent.Execute(), TimeSpan.FromSeconds(5));

在data.frame中你可以这样做:

var4 == "value1" | var5 == "value1"