2015-12-23 49 views
15

我很新的R.如何指定“不包含”在dplyr过滤器中的R

使用表称为SE_CSVLinelist_clean,我想提取其中变量称为where_case_travelled_1不包含字符串的行"Outside Canada" OR "Outside province/territory of residence but within Canada"。然后创建一个名为SE_CSVLinelist_filtered的新表。

SE_CSVLinelist_filtered <- filter(SE_CSVLinelist_clean, 
where_case_travelled_1 %in% -c('Outside Canada','Outside province/territory of residence but within Canada')) 

上面的代码工作时,我只使用“c”而不是“-c”。
那么,如果我真的想要排除包含国家或省以外的行,我该如何指定上述内容?

非常感谢

+10

如果您发现自己希望经常使用“不包含”,您可能需要定义自己的功能。例如'\'%notin%\'= function(x,y)!(x%in%y)''。然后你可以做'x%notin%y'而不是'!(x%in%y)''。 – eipi10

回答

32

注意%in%返回TRUEFALSE逻辑载体。要否定它,你可以在逻辑语句的前面使用!

SE_CSVLinelist_filtered <- filter(SE_CSVLinelist_clean, 
!where_case_travelled_1 %in% 
    c('Outside Canada','Outside province/territory of residence but within Canada')) 

关于你与-c(...)原来的做法,-是一元运算符的数字或复向量(或对象可以强制该“执行算术给他们)“(来自help("-"))。由于您正在处理不能被强制为数字或复杂的字符向量,因此不能使用-

相关问题