如果列包含字符串,则为该行输入值。

19

我有一个类似这样的数据框:

A     B
ABC1  0
DEF2  4
DEG0  4

如何将这个数据框进行转换,如果一个行包含字母"D",则在一个新列中插入值"yes",否则插入"no"。

最终的数据框应该像这样:

A     B    C
ABC1  0    no
DEF2  4    yes
DEG0  4    yes

5
尝试 ifelse(grepl("D", df$A), "yes", "no") - akrun
好的简明问题。不应该被踩。 - Jake
1个回答

34

我们可以使用 grepl 来匹配“A”列中的“D”,返回一个逻辑索引,然后使用 ifelse 将逻辑向量更改为“yes”和“no”。

df$C <- ifelse(grepl("D", df$A), "yes", "no")

有没有使用dplyr的方式来实现使用mutate相同的效果? - user5249203
3
@user5249203 这段代码是 library(dplyr);library(stringr);df <- df %>% mutate(C = case_when(str_detect(A, "D") ~ "yes", TRUE ~ "no")) - akrun

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接