假设我有这样的文字,
text<-c("[McCain]: We need tax policies that respect the wage earners and job creators. [Obama]: It's harder to save. It's harder to retire. [McCain]: The biggest problem with American healthcare system is that it costs too much. [Obama]: We will have a healthcare system, not a disease-care system. We have the chance to solve problems that we've been talking about... [Text on screen]: Senators McCain and Obama are talking about your healthcare and financial security. We need more than talk. …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用R中的stringr包从字符串中提取所有内容,直到第一次出现下划线.
我试过的
str_extract("L0_123_abc", ".+?(?<=_)")
> "L0_"
Run Code Online (Sandbox Code Playgroud)
关闭但没有雪茄.我怎么得到这个?另外,理想情况下我想要一些易于扩展的东西,这样我就可以在第一个和第二个下划线之间获取信息,并获得第三个下划线之后的信息.
我希望将一个字符串拆分为 3 个字符的 ngram - 例如 HelloWorld 将变为“Hel”、“ell”、“llo”、“loW”等 我如何使用 R 来实现这一点?
在Python中,它需要使用范围函数进行循环 - 例如[myString[i:] for i in range(3)]
有没有一种巧妙的方法可以使用循环遍历字符串的字母stringr将单词标记为向量?
例如
dfWords <- c("HelloWorld", "GoodbyeMoon", "HolaSun") %>%
data.frame()
names(dfWords)[1] = "Text"
Run Code Online (Sandbox Code Playgroud)
我想生成一个新列,其中包含标记化文本变量的向量(最好使用dplyr)。然后可以稍后将其拆分为新的列。
我有一个字符串向量
c("YSAHEEHHYDK", "HEHISSDYAGK", "TFAHTESHISK", "ISLGEHEGGGK",
"LSSGYDGTSYK", "FGTGTYAGGEK", "VGASTGYSGLK", "TASGVGGFSTK", "SYASDFGSSAK",
"LYSYYSSTESK")
Run Code Online (Sandbox Code Playgroud)
对于每个字符串,我想用“pY”、“pS”或“pT”替换“Y”、“S”或“T”。但我不希望所有替换都在同一个最终字符串中,我希望每个替换生成一个新字符串,例如
“YSAHEEHHYDK”变成
c("pYSAHEEHHYDK",
"YpSAHEEHHYDK",
"YSAHEEHHpYDK")
Run Code Online (Sandbox Code Playgroud) 我正在尝试将dplyr和stringr结合起来检测数据帧中的多个模式.我想使用dplyr,因为我想测试许多不同的列.
这是一些示例数据:
test.data <- data.frame(item = c("Apple", "Bear", "Orange", "Pear", "Two Apples"))
fruit <- c("Apple", "Orange", "Pear")
test.data
item
1 Apple
2 Bear
3 Orange
4 Pear
5 Two Apples
Run Code Online (Sandbox Code Playgroud)
我想用的是:
test.data <- test.data %>% mutate(is.fruit = str_detect(item, fruit))
Run Code Online (Sandbox Code Playgroud)
并收到
item is.fruit
1 Apple 1
2 Bear 0
3 Orange 1
4 Pear 1
5 Two Apples 1
Run Code Online (Sandbox Code Playgroud)
一个非常简单的测试工作
> str_detect("Apple", fruit)
[1] TRUE FALSE FALSE
> str_detect("Bear", fruit)
[1] FALSE FALSE FALSE
Run Code Online (Sandbox Code Playgroud)
但即使没有dplyr,我也无法在数据框的列上工作:
> test.data$is.fruit <- str_detect(test.data$item, fruit)
Error …Run Code Online (Sandbox Code Playgroud) 我正在尝试编写一个函数来计算模式的连续实例数.举个例子,我喜欢这个字符串
string<-"A>A>A>B>C>C>C>A>A"
Run Code Online (Sandbox Code Playgroud)
被转化为
"3 A > 1 B > 3 C > 2 A"
Run Code Online (Sandbox Code Playgroud)
我有一个函数来计算每个字符串的实例,见下文.但它没有达到我想要的排序效果.任何想法或指针?
谢谢,
[R
现有功能:
fnc_gen_PathName <- function(string) {
p <- strsplit(as.character(string), ";")
p1 <- lapply(p, table)
p2 <- lapply(p1, function(x) {
sapply(1:length(x), function(i) {
if(x[i] == 25){
paste0(x[i], "+ ", names(x)[i])
} else{
paste0(x[i], "x ", names(x)[i])
}
})
})
p3 <- lapply(p2, function(x) paste(x, collapse = "; "))
p3 <- do.call(rbind, p3)
return(p3)
}
Run Code Online (Sandbox Code Playgroud) 我有一个带有自由文本字段的数据库,我想将其用于filteradata.frame或tibble。我也许可以通过大量工作创建一个数据中当前出现的搜索词的所有可能拼写错误的列表(请参阅下面一个术语的所有拼写示例),然后我可以像下面的示例代码一样stringr::str_detect使用。然而,当将来可能出现更多拼写错误时,这并不安全。如果我愿意接受一些限制/做出一些假设(例如,拼写错误之间的编辑距离可能有多远,或者就其他一些差异而言,人们不会使用完全不同的术语等),是否有一些做模糊版本的简单解决方案str_detect?
据我所知,明显的软件包似乎stringdist没有直接执行此操作的功能。我想我可以编写自己的函数,将类似stringdist::afind或的东西应用于向量的每个元素,并后处理结果以最终返回或布尔stringdist::amatch值的向量,但我想知道这个函数是否不存在于某处(并且更有效地实现)比我会做的)。TRUEFALSE
这是一个示例,说明了我如何str_detect可能会错过我想要的一行:
library(tidyverse)
search_terms = c("preclinical", "Preclincal", "Preclincial", "Preclinial",
"Precllinical", "Preclilnical", "Preclinica", "Preclnical",
"Peclinical", "Prclinical", "Peeclinical", "Pre clinical",
"Precclinical", "Preclicnial", "Precliical", "Precliinical",
"Preclinal", "Preclincail", "Preclinicgal", "Priclinical")
example_data = tibble(project=c("A111", "A123", "B112", "A224", "C149"),
disease_phase=c("Diabetes, Preclinical", "Lipid lowering, Perlcinical",
"Asthma, Phase I", "Phase II; Hypertension", "Phase 3"),
startdate = c("01DEC2018", "17-OKT-2017", "11/15/2019", "1. Dezember 2004", "2005-11-30"))
# Finds only project …Run Code Online (Sandbox Code Playgroud) r string-matching fuzzy-comparison levenshtein-distance stringr
相关问题在这里.
所以我有一个货币值包含美元符号和逗号的字符向量.但是,我想尝试在同一步骤中删除逗号和美元符号.
这会删除美元符号=
d = c("$0.00", "$10,598.90", "$13,082.47")
gsub('\\$', '', d)
Run Code Online (Sandbox Code Playgroud)
这会删除逗号=
library(stringr)
str_replace_all(c("10,0","tat,y"), fixed(c(","), "")
Run Code Online (Sandbox Code Playgroud)
我想知道我是否可以一步删除这两个字符.
我意识到我可以将gsub结果保存到一个新变量中,然后在该变量上重新应用该(或另一个函数).但我想我想知道一步到位.
请帮我在R中安装stringr和stringi包.结果是:
install.packages("stringi")
Installing package into ‘C:/Users/kozlovpy/Documents/R/win-library/3.2’
(as ‘lib’ is unspecified)
?????? URL 'https://mran.revolutionanalytics.com/snapshot/2015-08-27/bin/windows/contrib/3.2/stringi_0.5-5.zip'
Error in download.file(url, destfile, method, mode = "wb", ...) :
?? ???? ??????? URL 'https://mran.revolutionanalytics.com/snapshot/2015-08-27/bin/windows/contrib/3.2/stringi_0.5-5.zip'
????????: ??????????????:
? download.file(url, destfile, method, mode = "wb", ...) :
'InternetOpenUrl' ?? ???????: '???????? ???????? ?? ????????'
?????????????? ? download.packages(pkgs, destdir = tmpd, available = available, :
?????????? ?????? ‘stringi’ ?? ???????
sessionInfo()
R version 3.2.2 (2015-08-14)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 7 x64 (build 7601) Service Pack 1
locale: …Run Code Online (Sandbox Code Playgroud) 我正在尝试通过将杂乱的站点名称列表与已批准的列表进行匹配来清理数据库。
例如,首选站点名称可能是“Cotswold Water Park Pit 28”,但该站点已输入到数据库中:“Pit 28”、“28”、“CWP Pit 28”和“Cotswold 28”。
数据看起来像这样:
approved <- c("Cotswold Water Park Pit 28", "Cotswold Water Park Pit 14", "Robinswood Hill")
messy <- c("Pit 28", "28", "CWP Pit 28", "Cotswold 28", "14", "Robinswood")
Run Code Online (Sandbox Code Playgroud)
我正在寻找一种方法来将每个元素中的单词/数字(非空格字符簇)messy与approved. 理想情况下,我最终会得到这样的结果:
Cotswold Water Park Pit 28 Cotswold Water Park Pit 14 Robinswood Hill
[1,] "Pit 28" "Pit 28" "Robinswood"
[2,] "28" "CWP Pit 28" NA
[3,] "CWP Pit 28" "14" NA
[4,] "Cotswold 28" NA NA
Run Code Online (Sandbox Code Playgroud)
这些approved …