说我有一个名字的向量,像这样:
names <- c("Bernice", "Dianna", "Philip", "Laurie",
"Rochelle", "Arturo", "Enrique", "Sarah",
"Darryl", "Arthur")
我想创建另一个具有每个名称的性别的向量。我就是这样做的:
ifelse(names == "Bernice" | names == "Dianna" | names == "Laurie"
| names == "Rochelle" | names == "Sarah", "Feminine",
ifelse(names == "Philip" | names == "Arturo" | names == "Enrique"
| names == "Darryl" | names == "Arthur", "Masculine", NA))
但是,我敢打赌,对于每个逻辑测试使用|names == ""
是一个更好的选择(我的实际案例最后只有250行用于此变量)。
到目前为止,我已经尝试了这个(这可以在grep
中使用,但显然不在这里):
ifelse(names == "Bernice|Dianna|Laurie|Rochelle|Sarah", "Feminine",
ifelse(names == "Philip|Arturo|Enrique|Darryl|Arthur", "Masculine", NA))
以及:
ifelse(names == "Bernice" | "Dianna" | "Laurie" | "Rochelle" | "Sarah",
"Feminine",
ifelse(names == "Philip" | "Arturo" | "Enrique" | "Darryl" | "Arthur",
"Masculine", NA))
但似乎都没有效果。
我在处理数据帧时遇到了很多问题(必须使用同一个变量的多个逻辑测试ifelse
),并且我已经检查了关于多个ifelse的SO的一些问题,但似乎无法找到我能用的任何东西。
答案 0 :(得分:4)
这是一种方法
> girls <- c("Bernice", "Diana", "Laurie", "Rochelle", "Sarah")
> ifelse(names %in% girls, "Feminine", "Masculine")
[1] "Feminine" "Masculine" "Masculine" "Feminine" "Feminine" "Masculine" "Masculine"
[8] "Feminine" "Masculine" "Masculine"