比较R中的因子和字符串

比较R中的因子和字符串,r,dplyr,R,Dplyr,我不断遇到这个问题,我有一个数据集,如: 'data.frame': 5362 obs. of 5 variables: $ productname: Factor w/ 160 levels "Accent Mugs",..: $ othervar: something else 我想按productname的内容进行筛选: out_ds <- data %>% filter(isTRUE(all.equal(productname, "Woven Blan

我不断遇到这个问题,我有一个数据集,如:

'data.frame':   5362 obs. of  5 variables:
  $ productname: Factor w/ 160 levels "Accent Mugs",..: 
  $ othervar: something else
我想按
productname
的内容进行筛选:

out_ds <- data %>% 
  filter(isTRUE(all.equal(productname, "Woven Blankets")))
out\u ds%
过滤器(isTRUE(all.equal(productname,“编织毛毯”))

那不行。如何测试因子标签和字符串值之间的相等性?

您的
过滤器
语句中的
all.equal
正在将
因子
productname
字符串
编织毯进行比较
所以它不会返回
TRUE
,但会返回两个参数之间差异的描述,请参阅for
all.equal

使用
iris
数据集,您可以在运行时看到:

all.equal(iris$Species, "versicolor")

> "'current' is not a factor"
@注释中的AntoniosK建议应该适用于您的
数据。frame
,因为
dplyr
包中的
filter
函数可以轻松处理
factor
对象

out_ds <- data %>% 
    filter(productname == "Woven Blankets")
out\u ds%
过滤器(productname==“编织毯”)

您的
过滤器
语句中的
all.equal
因子
productname
字符串
“编织毯”
进行比较,因此它不会返回
TRUE
,但会返回两个参数之间差异的描述,有关
all.equal
,请参见

使用
iris
数据集,您可以在运行时看到:

all.equal(iris$Species, "versicolor")

> "'current' is not a factor"
@注释中的AntoniosK建议应该适用于您的
数据。frame
,因为
dplyr
包中的
filter
函数可以轻松处理
factor
对象

out_ds <- data %>% 
    filter(productname == "Woven Blankets")
out\u ds%
过滤器(productname==“编织毯”)

您是否尝试过过滤(productname==“编织毛毯”)
?有点麻烦,但是id=which(as.character(productname0==“编织毛毯”);df=df[id,]与
虹膜
数据集,
虹膜%>%过滤(物种==“versicolor”)一起工作呢
在这种情况下,使用
all.equal
将非常困难,因为
all.equal
还测试变量和您提供的文本之间的因子级别数。然后您必须使用
apply
(很可能)逐行测试条件(未测试)。最好使用%
中的
=
%in%
来测试条件。您是否尝试过
过滤器(productname==“编织毛毯”)
?有点混乱,但id=哪个(如.character(productname0==“编织毛毯”);df=df[id,]与
iris
数据集、
iris%>%过滤器(物种==“versicolor”)一起工作呢
在这种情况下,使用
all.equal
将非常困难,因为
all.equal
还测试变量和您提供的文本之间的因子级别数。然后您必须使用
apply
(很可能)逐行测试条件(未测试)。最好使用%
中的
=
%来测试条件。