【发布时间】:2018-06-20 17:52:04
【问题描述】:
这可能很简单:
我喜欢创建条件“value in variableB or variableA”。
这是有效的:
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的第一个问题。如有任何不清楚之处,请见谅。)
【问题讨论】:
-
您期待创建列还是
filter行? -
var2 | var3 %in% 1没有按照你的想法做,测试3 | 2 %in% 1 -
感谢您的提示!刚从 Stata 来,一个人可以做
gen asean4 = 1 if inlist(countryname, “Indonesia”, “Malaysia”, “Philippines”, “Thailand”),但也可以翻转gen thai = 1 if inlist(“Thailand”, country1, country2, country3)。正在寻找类似的东西。 -
我正在寻找 if-else 语句中的条件。在
var4 == "value1" | var5 == "value1中摆脱重复的== "value1的东西。 -
回到这个
var2 | var3 %in% 1它似乎适用于数字变量或者我遗漏了一些东西:q1_a <- c(1,0,0) q1_b <- c(0,1,0) test <- data.frame(q1_a, q1_b) test$q1_a | test$q1_b %in% 1给出了> [1] TRUE TRUE FALSE这是正确的。
标签: r if-statement dplyr operators conditional-statements