在R中创建一个true / false变量

时间:2019-04-16 01:53:18

标签: r string stringr mutate

我有一个变量列,其中包含大字符串值,该字符串值是多个单词。我想创建一个True / False列,如果在感兴趣的列中检测到某个值,则报告true。

我已经尝试了带有嵌入式str_detect的mutate函数。

Dataset <- Dataset %>%
  mutate(new_column = str_detect('column.of.interest', "abcd"))

我的预期输出是我感兴趣的列包含“ abcd”的所有行在新列中报告为TRUE的情况。但是,每行在我的新列中报告为FALSE。

2 个答案:

答案 0 :(得分:1)

Base R版本。首先创建一个样本数据集(提问者:您应该这样做;回答者:您应该始终这样做):

> Dataset = data.frame(ID=1:10, column.of.interest=c(NA,"This","abcd","Foo","the abcde",NA,"Me","my","mo","END"))

如下所示:

> Dataset
   ID column.of.interest
1   1               <NA>
2   2               This
3   3               abcd
4   4                Foo
5   5          the abcde
6   6               <NA>
7   7                 Me
8   8                 my
9   9                 mo
10 10                END

然后做:

> Dataset$new_column <- grepl("abcd", Dataset$column.of.interest, ignore.case = T)

获得:

> Dataset
   ID column.of.interest new_column
1   1               <NA>      FALSE
2   2               This      FALSE
3   3               abcd       TRUE
4   4                Foo      FALSE
5   5          the abcde       TRUE
6   6               <NA>      FALSE
7   7                 Me      FALSE
8   8                 my      FALSE
9   9                 mo      FALSE
10 10                END      FALSE

您可能想要或不想要ignore.case

答案 1 :(得分:0)

这是一个基于ggplot2的数据集的答案

library(ggplot2)
library(dplyr)

diamonds %>% mutate(newCol = str_detect(clarity, "1"))

答案的原始错误版本(请参见注释,以更好地了解上面的内容

diamonds %>% mutate(newCol = ifelse(str_detect(clarity, "1"), "TRUE", "FALSE"))