我有一个数据框,其中包含两列,姓氏和新列,我想分配"是"或"否"。
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;个人水平,但我发现它效率低下。
答案 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