Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在R中创建真/假变量_R_String_Stringr_Mutate - Fatal编程技术网

在R中创建真/假变量

在R中创建真/假变量,r,string,stringr,mutate,R,String,Stringr,Mutate,我有一个变量列,其中包含多个单词的大字符串值。我想创建一个True/False列,如果在感兴趣的列中检测到某个值,该列将报告True 我尝试了一个带有嵌入式str_检测的变异函数 Dataset <- Dataset %>% mutate(new_column = str_detect('column.of.interest', "abcd")) Dataset% 突变(新列=str\u detect('column.of.interest','abcd')) 我的预期输出是

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

我尝试了一个带有嵌入式str_检测的变异函数

Dataset <- Dataset %>%
  mutate(new_column = str_detect('column.of.interest', "abcd"))
Dataset%
突变(新列=str\u detect('column.of.interest','abcd'))

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

这里有一个答案,它基于
ggplot2

library(ggplot2)
library(dplyr)

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

答案的原始版本不好(请参见注释了解为什么上面的答案更好)


基本R版本。首先创建一个样本数据集(提问者:你应该这样做;回答者:你应该一直这样做):

看起来是这样的:

> 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
>数据集
感兴趣的ID列
1   1               
2这个
3 3 abcd
四福
5 abcde
6   6               
7我
我的
9个月
10完
然后做:

> Dataset$new_column <- grepl("abcd", Dataset$column.of.interest, ignore.case = T)
>数据集$new\u列数据集
ID column.of.interest new_column
1 1错误
这是假的
3 3 abcd正确
4福假
5.abcde是真的
6错误
我错了
我的错误
9月9日假
10结束错误

您可能希望也可能不希望
忽略。case

您不应该引用列名:
str挈detect(column.of.interest,“abcd”)
如果在
column.of.interest
周围不加引号,投票以打字错误结束,则可以正常工作。这是不好的<代码>带引号的“真”和“假”是
字符类,而不是
逻辑类。这会破坏一些东西,例如,
isTRUE(“TRUE”)
返回
FALSE
。为了避免答案不好,它应该是
ifelse(str_detect(clearity,“1”)、TRUE、FALSE)
。但即使这样,也不需要
ifelse
str_detect
返回
TRUE
FALSE
,无需使用
ifelse
转换为
TRUE
FALSE
。越简单的变异(newCol=str_detect(clarity,“1”))
越好。你甚至不需要变异。直接操作:
diamonds$newCol=str_detect(diamonds$clarity,“1”))
@Gregor,谢谢,但你不应该删除你的评论。好的。重新编辑您的问题,以获得更好的答案,但仍有评论的背景。这解决了我的问题!问题是我感兴趣的专栏周围有个“.”。非常感谢。
> 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