比较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
,但会返回两个参数之间差异的描述,请参阅forall.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
(很可能)逐行测试条件(未测试)。最好使用%
中的=
或%来测试条件。