假设我有一个像
term cnt
apple 10
apples 5
a apple on 3
blue pears 3
pears 1
如何筛选此列中所有部分找到的字符串,例如获取结果
term cnt
apple 10
pears 1
没有指出我想过滤哪些术语(苹果|梨),而是通过自我引用的方式(即它确实根据整列检查每个术语,并删除部分匹配的术语)。令牌的数量不受限制,字符串的一致性也不受限制(即“苹果”将与“苹果”匹配)。这将导致基于dplyr的反向广义版本
d[grep("^apple$|^pears$", d$term), ]
此外,使用这种分离来获得累计金额会很有趣,例如。
term cnt
apple 18
pears 4
我无法让它与包含()或grep()一起工作。
谢啦
试试这个:
df=data.frame(term=c('apple','apples','a apple on','blue pears','pears'),cnt=c(10,5,3,3,1))
matches = sapply(df$term,function(t,terms){grepl(pattern = t,x = terms)},df$term)
sapply(1:ncol(matches),function(t,mat){
tempmat = mat[,t]&mat[,-t]
indices=unlist(apply(tempmat,MARGIN = 2,which))
df$term[indices]<<-df$term[t]
},matches)
df%>%group_by(term)%>%summarize(cnt=sum(cnt))
# A tibble: 2 x 2
# term cnt
# <chr> <dbl>
#1 apple 18
#2 pears 4
您可以尝试使用tidyverse
类似的东西
1. define a list of the words as:
k <- dft %>%
select(term) %>%
unlist() %>%
unique()
2. operate on the data as:
dft %>%
separate(term, c('t1', 't2')) %>%
rowwise() %>%
mutate( g = sum(t1 %in% k)) %>%
filter( g > 0) %>%
select(t1, cnt)
其中:
t1 cnt
<chr> <int>
1 apple 10
2 apples 5
3 pears 1
不过,这仍然不能处理apple
和apple
。我会继续尝试的。
希望答案是完整的。不是很地道(如Pythonista所说),但有人可以建议对此进行改进:
> ssss <- data.frame(c('apple','red apple','apples','pears','blue pears'),c(15,3,10,4,3))
>
> names(ssss) <- c('Fruit','Count')
>
> ssss
Fruit Count
1 apple 15
2 red apple 3
3 apples 10
4 pears 4
5 blue pears 3
>
> root_list <- as.vector(ssss$Fruit[unlist(lapply(ssss$Fruit,function(x){length(grep(x,ssss$Fruit))>1}))])
>
>
> ssss %>% filter(ssss$Fruit %in% root_list)
Fruit Count
1 apple 15
2 pears 4
>
> data <- data.frame(lapply(root_list, function(x){y <- stringr::str_extract(ssss$Fruit,x); ifelse(is.na(y),'',y)}))
>
> cols <- colnames(data)
>
> #data$x <- do.call(paste0, c(data[cols]))
> #for (co in cols) data[co] <- NULL
>
> ssss$Fruit <- do.call(paste0, c(data[cols]))
>
> ssss %>% group_by(Fruit) %>% summarise(val = sum(Count))
# A tibble: 2 x 2
Fruit val
<chr> <dbl>
1 apple 28
2 pears 7
>
我当前的代码只删除具有“未分配”确切值的值,而我希望它删除任何包含“未分配”的值。 这是我的密码 我希望从中删除任何“未分配”值的列称为taxon。 谢谢!
问题内容: 我想为站点seo写一个比较过程(t-sql)。 我有一个表,其中包含字段url的一部分的字段“ url”(nvarchar())。例如:“ _mysyte.com/?id=2_ ”。每个URL的此表还包含我需要提取的元数据。 主要问题是网站上的完整url看起来像是“ _mysyte.com/?id=2®ion=0 &page=1_ ”,我只需要忽略一切,除了表中的url: 我的意思是:
两行的一个例子是:([a,b,c],d)和([d,e],a)我想把这些行转换成([a,b,c],[d,e])和([d,e],[a,b,c]) dataframe的列名是“src”和“dst”。 我如何处理这个问题?
本文向大家介绍如何过滤R中包含某个字符串的行?,包括了如何过滤R中包含某个字符串的行?的使用技巧和注意事项,需要的朋友参考一下 我们可以通过使用dplyr包的filter和grepl函数来做到这一点。 示例 考虑mtcars数据集。 假设我们要过滤类型为Ferrari的行,则可以按以下步骤进行操作- 现在,如果要过滤类型为Merc或Datsun的行,则可以按以下步骤进行操作- 假设如果要过滤没有M
本文向大家介绍如何使用dplyr从R数据框中过滤某些字符串的列值?,包括了如何使用dplyr从R数据框中过滤某些字符串的列值?的使用技巧和注意事项,需要的朋友参考一下 筛选数据可以帮助我们制作所需的数据组,而不是将其进一步用于分析。这样,可以实现精度并且计算变得容易。假设我们有一个同质组,然后根据某些特征对该组进行分区,则可以使用dplyr包的过滤功能。 示例 请看以下数据帧- 加载dplyr软件
问题内容: 说我有一个ArrayList: 我希望在我说arrayList.containsSubString(’string1’);时返回arrayList的第一个元素。除了遍历元素的每个元素并检查该元素字符串的子字符串之外,该如何做? 问题答案: 我能想到的唯一方法是执行以下操作: 虽然不知道这是否被认为是好的做法。