我有一个变量列,其中包含大字符串值,该字符串值是多个单词。我想创建一个True / False列,如果在感兴趣的列中检测到某个值,则报告true。
我已经尝试了带有嵌入式str_detect的mutate函数。
Dataset <- Dataset %>%
mutate(new_column = str_detect('column.of.interest', "abcd"))
我的预期输出是我感兴趣的列包含“ abcd”的所有行在新列中报告为TRUE的情况。但是,每行在我的新列中报告为FALSE。
答案 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"))