首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >dplyr滤波函数与agrep相结合

dplyr滤波函数与agrep相结合
EN

Stack Overflow用户
提问于 2015-12-12 12:09:26
回答 2查看 427关注 0票数 0

我试图只从表中筛选标题列中有“狗”一词的行,但我无法让它工作。

下面是一个数据示例:

代码语言:javascript
复制
    ID NozamaItemID                                                    NozamaTitle 
1 4557  12000017544 Starbucks Double Shot Espresso Light (4 Count, 6.5 Fl Oz Each) 
2 4558  12000021992                                        Pepsi, 8Ct, 12Oz Bottle 
3 4559  12000024542                     Zuke'S Natural Hip Action dog Treats, 3 Oz 
4 4560  12000030680                  Pepsi Made With Real Sugar, 12 Ct, 12 Oz Cans 
5 4561  12000030680                  Pepsi Made With Real Sugar, 12 Ct, 12 Oz Cans 
6 4562  12000030680                  Pepsi Made With Real Sugar, 12 Ct, 12 Oz Cans 

下列代码应该有效,但不起作用:

代码语言:javascript
复制
amzp <- select(amz, ID, NozamaItemID, NozamaTitle, NozamaCustomerID)

searchTerm="cat|dog"
amzp.a <- mutate(amzp, animalFood = ifelse(grepl(searchTerm, amzp$NozamaTitle, ignore.case = TRUE) == TRUE, TRUE, FALSE))

我希望在第3行能看到一个真实的结果。任何帮助都是非常感谢的。谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-12-12 13:29:44

你离我很近,你只需要摆脱ifelse

代码语言:javascript
复制
amzp.a <- mutate(amzp, animalFood = grepl(searchTerm, 
                         NozamaTitle, ignore.case = TRUE))

这意味着:

代码语言:javascript
复制
> amzp.a
    ID NozamaItemID                                                     NozamaTitle animalFood
1 4557  12000017544  Starbucks Double Shot Espresso Light (4 Count, 6.5 Fl Oz Each)      FALSE
2 4558  12000021992                                         Pepsi, 8Ct, 12Oz Bottle      FALSE
3 4559  12000024542                      Zuke'S Natural Hip Action dog Treats, 3 Oz       TRUE
4 4560  12000030680                   Pepsi Made With Real Sugar, 12 Ct, 12 Oz Cans      FALSE
5 4561  12000030680                   Pepsi Made With Real Sugar, 12 Ct, 12 Oz Cans      FALSE
6 4562  12000030680                   Pepsi Made With Real Sugar, 12 Ct, 12 Oz Cans      FALSE

使用的数据:

代码语言:javascript
复制
amzp <- structure(list(ID = 4557:4562,
                       NozamaItemID = c(12000017544, 12000021992, 12000024542, 12000030680, 12000030680, 12000030680),
                       NozamaTitle = structure(c(4L, 1L, 2L, 3L, 3L, 3L), .Label = c("Pepsi, 8Ct, 12Oz Bottle","Zuke'S Natural Hip Action dog Treats, 3 Oz","Pepsi Made With Real Sugar, 12 Ct, 12 Oz Cans","Starbucks Double Shot Espresso Light (4 Count, 6.5 Fl Oz Each)"), class = "factor")),
                  .Names = c("ID", "NozamaItemID", "NozamaTitle"), class = "data.frame", row.names = c(NA, -6L))

编辑:您的原始代码:

代码语言:javascript
复制
amzp.a <- mutate(amzp, animalFood = ifelse(grepl(searchTerm, amzp$NozamaTitle, ignore.case = TRUE) == TRUE, TRUE, FALSE))

真的很管用。虽然它包含一些不需要的组件( ifelse-statement和在标准dplyr函数中使用data$column ),但它提供了所需的结果:

代码语言:javascript
复制
> amzp.a
    ID NozamaItemID                                                     NozamaTitle animalFood
1 4557  12000017544  Starbucks Double Shot Espresso Light (4 Count, 6.5 Fl Oz Each)      FALSE
2 4558  12000021992                                         Pepsi, 8Ct, 12Oz Bottle      FALSE
3 4559  12000024542                      Zuke'S Natural Hip Action dog Treats, 3 Oz       TRUE
4 4560  12000030680                   Pepsi Made With Real Sugar, 12 Ct, 12 Oz Cans      FALSE
5 4561  12000030680                   Pepsi Made With Real Sugar, 12 Ct, 12 Oz Cans      FALSE
6 4562  12000030680                   Pepsi Made With Real Sugar, 12 Ct, 12 Oz Cans      FALSE

因此,您可能需要更详细地描述“不工作”语句。

票数 3
EN

Stack Overflow用户

发布于 2015-12-12 13:19:23

我不太清楚您想要达到什么目的,但是如果您的目标是只留下“NozamaTitle”一词出现在dplyr::filter列中的行,则只需使用dplyr::filter。使用chickwts作为一个示例来代替一个最小可复制的示例:

代码语言:javascript
复制
levels(chickwts$feed)
# [1] "casein"    "horsebean" "linseed"   "meatmeal"  "soybean"  
# [6] "sunflower"

df <- filter(chickwts, grepl("bean", feed))
df
#    weight      feed
# 1     179 horsebean
# 2     160 horsebean
# 3     136 horsebean
# ...
# 11    243   soybean
# 12    230   soybean
# 13    248   soybean
# ...

这就是你想要的吗?

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34239685

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档