繁体   English   中英

R-使用grepl返回行索引

R - return row indexes using grepl

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我想返回文本匹配的行索引。 文本匹配通过Radist函数完成。 该代码创建一些文本数据,计算编辑距离并返回5个最佳匹配。

name <- c("holiday inn", "geico", "zgf", "morton phillips")
address <- c("400 lafayette pl tupelo ms", "227 geico plaza chevy chase md", 
"811 quincy st washington dc", "1911 1st st rockville md")

source1 <- data.frame(name, address)

 name <- c("williams sonoma", "mamas bbq", "davis polk", "hop a long 
diner","joes crag shack", "mike lowry place", "holiday inn", "zummer")

name2 <- c(NA, NA, NA, NA, NA, NA, "hi express", "zummer gunsul frasca")
address <- c("2 reads way new castle de", "248 w 4th st newark de",
 "1100 21st st nw washington dc", "1804 w 5th st wilmington de",
 "1208 kenwood parkway holdridge nb", "4203 ocean drive miami fl",
 "400 lafayette pl tupelo ms", "811 quincy st washington dc")
source2 <- data.frame(name, name2, address)

#calculate edit distance for name and address
dist.mat.nm <- adist(source1$name, source2$name, partial = T, ignore.case = TRUE)
dist.mat.ad <- adist(source1$address, source2$address, partial = TRUE, ignore.case = TRUE)

#assemble data frame
imat <- apply(dist.mat.nm, 1, order)[1:5, ]
top.nm <- data.frame(name = source1$name)
tmp <- apply(imat, 1, function(i) source2$name[i])
colnames(tmp) <- paste("top", 1:5, sep = ".")
top.nm <- cbind(top.nm, tmp)

imat <- apply(dist.mat.ad, 1, order)[1:5, ]
top.ad <- data.frame(address = source1$address)
tmp <- apply(imat, 1, function(i) source2$address[i])
colnames(tmp) <- paste("top", 1:5, sep = ".")
top.ad <- cbind(top.ad, tmp)

我想做的是,1.对于每个top.nmtop.ad列,为找到匹配项的行索引添加一列index.match ,并2.添加包含该匹配项的编辑距离的列distance (即adist的值)。

因此,对于top.nm.1index.matchc(7, 6, 4, 1) index.match c(7, 6, 4, 1)

我试过使用which(grepl(paste(source1$name, collapse = "|"), source2$name, fixed = F))返回行索引,但由于某种原因,它仅返回单个值,而不是整个向量。 任何帮助或建议,将不胜感激。

问题暂未有回复.您可以查看右边的相关问题.
2 R-我们如何使用grepl或str_detect Againts向量列表? C()

如何针对向量中的列表使用grepl函数? 所以我想做的是... ...更多100,000行 给定此数据框,我想找到哪个“供应商”与“广告系列”匹配。 但是由于没有完全匹配的内容,因此我想使用grepl或grep或str_detect函数来映射它们,如果它们匹配,我想在新列中 ...

2018-07-31 15:27:24 1 73   r
3 R - 使用 grepl 的条件模式匹配

我有两个数据框,如下所示: 我想做的是以下内容: 在df2$name2搜索df1$name的匹配项。 如果找到匹配项,则将匹配行中的df2$school2与df1$school进行比较。 如果发现不匹配df2$school2在df1$school ,在列返回FALSE df2$pe ...

4 R - 使用grepl和相同的多个条件嵌套for循环

我试图用“1”标记所有水果,如果它仅由一个国家提供或否则为“0”。 我有两个数据表: 表格1: 水果 - 每排都有不同的水果,如苹果,香蕉,桃子等...... 国家 - 每行有2位数iso格式的水果主要供应国,例如美国,英国,NO等... SourceUnique ...

6 R-返回文本匹配的行索引

我试图通过levenshtein距离( R adist )找到某些文本字符串的n个最佳匹配。 以下示例应阐明: 下面使用地址和名称计算编辑距离。 以下内容返回五个最佳匹配项,每个匹配项都在一列中。 我想做的是: 对于每个“ top.name”和“ top.ad ...

7 r-使用索引过滤data.frame的行

我有一个名为sonar的data.frame。 第一行的内容是: 另外,我有一个索引向量; index = c(1:N) 。 我需要采样索引,然后将其分为5部分。 然后,我需要采取5组行,每组具有由矢量索引的一部分给定的data.frame行。 我已经完成以下工作: ...

8 R-带有特定排除项的grepl

我想知道如何在grepl插入特定的排除模式。 让我们想象,我想向WHAM致意。 我得到的是 我可以看到HOTELNEWHAMP是外国的。 然后,我该如何vec[grepl("WHAM", vec )]并明确指出我不希望HOTELNEWHAMP ? (不是这个ve ...

9 R-是否可以优化或简化对grepl()的多次调用?

使用NOAA Severe Weather数据 ,其中包括描述天气事件类型的变量EVTYPE (事件类型)。 这些值包括许多同义词,我希望以多个更广泛的名称来收集它们。 例如,有TORNADO ,而且ROTATING WALL CLOUD , FUNNEL CLOUD和WHIRLWIND在某 ...

10 在R中使用grepl

在哪种情况下,这两种不同的实现方式会产生不同的结果? 如果这些方法总是给出相同的结果,那么推荐其中的一种,为什么? 谢谢 ...

2015-06-13 17:18:57 3 1332   r/ grepl
暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM