如何在R中一次为多个因子级别分配一个值?

时间:2018-02-14 20:51:58

标签: r

我有一个数据框,其中包含两列,姓氏和新列,我想分配"是"或"否"。

df <- data.frame(x <- as.factor(c("a","b","c","d","e")), y <- NA)
colnames(df)<-c("last name", "newCol")

让我们说我想分配&#34;否&#34;在newCol中为&#34; a&#34;,&#34; c&#34;,&#34; e&#34;。如何指定&#34;否&#34;一次性到三个因素水平?

我尝试使用逻辑运算符|,使用因子级别,但它不起作用。我已经能够通过分配&#34; No&#34;个人水平,但我发现它效率低下。

1 个答案:

答案 0 :(得分:3)

您可以使用%in%一步检查"a""c""e"

df$newCol[df$`last name` %in% c("a", "c", "e")] <- "No"
df;
#last name newCol
#1         a     No
#2         b   <NA>
#3         c     No
#4         d   <NA>
#5         e     No

或使用tidyverse方法{/ 1}}:

ifelse

或使用require(tidyverse); df %>% mutate(newCol = ifelse(`last name` %in% c("a", "c", "e"), "No", "NA")) # last name newCol #1 a No #2 b NA #3 c No #4 d NA #5 e No 略有不同:

replace