标签: stringr

R计数次数字出现在列表的元素中

我有一个由单词组成的列表.

> head(splitWords2)
[[1]]
 [1] "Some"        "additional"  "information" "that"        "we"          "would"       "need"        "to"          "replicate"   "the"        
[11] "experiment"  "is"          "how"         "much"        "vinegar"     "should"      "be"          "placed"      "in"          "each"       
[21] "identical"   "container"   "or"          "what"        "tool"        "use"         "measure"     "mass"        "of"          "four"       
[31] "different"   "samples"     "and"         "distilled"   "water"       "rinse"       "after"       "taking"      "them"        "out"        

[[2]]
 [1] "After"       "reading"     "the"         "expirement"  "I"           "realized"    "that"        "additional"  "information" "you"        
[11] "need"        "to"          "replicate"   "expireiment" "is"          "one"         "amant"       "of"          "vinegar"     "poured"     
[21] "in"          "each"        "container"   "two"         "label"       "containers"  "before"      "start" …
Run Code Online (Sandbox Code Playgroud)

r list apply stringr

1
推荐指数
1
解决办法
9264
查看次数

使用正则表达式提取R中的重复短语

我试图通过使用下面的代码找到(然后提取)重复的短语.我要求以"大约"开头并以"关闭"结尾的短语.

例如,"总资产约为1.629亿美元,总存款为1.445亿美元"

str_locate(x,"(\b[Aa]pproximately\b)(.*)(\b[Cc]losed\b)")

str_extract(x,"(\b[Aa]pproximately\b)(.*)(\b[Cc]losed\b)")
Run Code Online (Sandbox Code Playgroud)

上面的代码返回短语开始和结束点的NA.以下是短语所在的字符向量的示例(它是公开的FDIC信息的网页)

"206-4662".\ r \n\r \n 12月\ r \n\r \n\r \n \n西部国家银行,亚利桑那州凤凰城,总资产约为1.629亿美元,总存款为1.445亿美元.华盛顿州西雅图联邦,已同意承担除某些经纪存款以外的所有存款.\ r \n(PR-195-2011)\ r \n\r \n\r \n\r \n \n翡翠海岸的高级社区银行佛罗里达州克雷斯特维尤,总资产约1.26亿美元,总存款1.121亿美元已经关闭.佛罗里达州巴拿马城北领地银行已同意承担所有存款.\ r \n(PR-194-2011)"

我可能正在使用reg表达错误,因为我是新手,所以任何建议都非常感激.

regex r stringr

1
推荐指数
1
解决办法
289
查看次数

在big data.table列中查找子字符串的第一个匹配项

我有一个大数据表,我想检查是否103a_foo存在.但是,大表中的文件名以不同的方式编写,因此我必须使用正则表达式.

dt = structure(list(myID = c("86577", "34005","34005", 
"194000", "30252", "71067"), 
filename = c("/scratch/tmpdir/12a_foo.mzXML.gz", 
"/scratch/tmpdir/103b_foo.XML.gz", "/scratch/tmpdir/103a_foo.XML.gz",
 "/scratch/tmpdir/103a_foo.XML.gz", 
"/scratch/tmpdir/100b_foo.XML.gz", "/scratch/tmpdir/108a_foo.XML.gz")),
 class = c("data.table", "data.frame"), 
row.names = c(NA, -5L), 
.Names = c("myID", "filename"))
Run Code Online (Sandbox Code Playgroud)

作为输出,我想要一个索引3,因为这是它第一次出现.我会使用grep('103a_foo', dt$filename)[1],但我希望搜索在第一次出现时停止,因为表很大(1000万行).

regex r stringr data.table

1
推荐指数
1
解决办法
347
查看次数

获取字符串的最后一部分

我想获取变量的最后一个子字符串(下划线后的最后一部分),在这种情况下:"myvar".

x = "string__subvar1__subvar2__subvar3__myvar"
Run Code Online (Sandbox Code Playgroud)

我的尝试导致从第一个子串开始匹配,例如

library(stringr)
str_extract(x, "__.*?$)
Run Code Online (Sandbox Code Playgroud)

我如何在R中执行此操作?

grep r stringr

1
推荐指数
1
解决办法
503
查看次数

根据加工方式将行变为普遍使用的用户定义字符串

我有这样的数据

 clas=c("CD_1","X.2_2","K$2_3","12k3_4",".A_5","xy_6")
 df <- data.frame(clas)
> df
    clas
1   CD_1
2  X.2_2
3  K$2_3
4 12k3_4
5   .A_5
6   xy_6
Run Code Online (Sandbox Code Playgroud)

我想改变一些符合这种条件的行

如果后面的字符串_是4,5和6替换字符串之前的_字符串B.所以输出应该是这样的;

    clas
1   CD_1
2  X.2_2
3  K$2_3
4 12kB_4
5   .B_5
6   xB_6
Run Code Online (Sandbox Code Playgroud)

谢谢!

编辑::

如果我有这样的数据:

    clas
1   CD_1
2  X.2_2
3  K$2_3
4 12k3_4
5   .A_5
6  xy_11
Run Code Online (Sandbox Code Playgroud)

然后应用您的解决方案

df %>% mutate(clas = str_replace(clas, "(.)(_[4511])", "B\\2"))

    clas
1   CB_1
2  X.2_2
3  K$2_3
4 12kB_4
5   .B_5
6  xB_11
Run Code Online (Sandbox Code Playgroud)

但我只想匹配11 …

r pattern-matching stringr dplyr grepl

1
推荐指数
1
解决办法
68
查看次数

找到字符串中的大写字母

我想在每个字符串中找到大写字母,并计算每个字符串的数量,例如

t = c("gctaggggggatggttactactGtgctatggactac", "gGaagggacggttactaCgTtatggactacT", "gcGaggggattggcttacG")  

ldply(str_match_all(t,"[A-Z]"),length)
Run Code Online (Sandbox Code Playgroud)

当应用上述功能时,我的输出是

1 4 2
Run Code Online (Sandbox Code Playgroud)

但我的愿望输出是

[1] G -1

[2] G -1 C -1 T -2

[3] G -2

r plyr stringr

1
推荐指数
1
解决办法
74
查看次数

使用stringr和dplyr重命名所有dataframe列

我正在尝试使用dplyr和重命名我的数据框中的所有列stringr,但似乎没有按照我想要的方式工作.我应该更改以下代码以获得我想要的输出(如下面的代码所示)?

这是完全可重现的代码:

library(dplyr)
library(stringr)
library(tibble)
library(rlang)

# dataframe
x <-
  tibble::as.tibble(cbind(
    Grace_neu_wrong = c(1:4),
    Grace_acc_wrong = c(1:4),
    Grace_att_wrong = c(1:4),
    Grace_int_wrong = c(1:4)
  ))

# defining custom function to rename the entire dataframe in a certain way
string_conversion <- function(df, ...) {

  # preparing the dataframe
  df <- dplyr::select(.data = df,
                      !!rlang::quo(...))

  # custom function to split the name of each column in a certain way
  splitfn <- function(x) {
    x <- as.character(x)
    split <- stringr::str_split(string …
Run Code Online (Sandbox Code Playgroud)

r stringr dplyr tidyverse

1
推荐指数
1
解决办法
882
查看次数

根据另一列中的正则表达式填充r中的列

我在R里做了一些关于葡萄酒评论的数据争论,但却找不到一种优雅的方式去做我想做的事情.
我的目标是查看通常包含葡萄酒年份的葡萄酒评论的标题栏,并将该年份放在不同的栏目中.Kernal:https://www.kaggle.com/kieroneil/data-wrangling-wine-reviews-in-r

这是我想要的代码,但我希望有人能告诉我一个更好的方法:

# Create the year columns and assign an arbitrary value.
library(tidyverse)
wine_04$year <- 1900
year_2000 <- unlist(str_detect(wine_04$title, "2000"))
year_2001 <- unlist(str_detect(wine_04$title, "2001"))
year_2002 <- unlist(str_detect(wine_04$title, "2002"))
year_2003 <- unlist(str_detect(wine_04$title, "2003"))
year_2004 <- unlist(str_detect(wine_04$title, "2004"))
year_2005 <- unlist(str_detect(wine_04$title, "2005"))
year_2006 <- unlist(str_detect(wine_04$title, "2006"))
year_2007 <- unlist(str_detect(wine_04$title, "2007"))
year_2008 <- unlist(str_detect(wine_04$title, "2008"))
year_2009 <- unlist(str_detect(wine_04$title, "2009"))
year_2010 <- unlist(str_detect(wine_04$title, "2010"))
year_2011 <- unlist(str_detect(wine_04$title, "2011"))
year_2012 <- unlist(str_detect(wine_04$title, "2012"))
year_2013 <- unlist(str_detect(wine_04$title, "2013"))
year_2014 <- unlist(str_detect(wine_04$title, "2014")) …
Run Code Online (Sandbox Code Playgroud)

regex r stringr tidyverse

1
推荐指数
1
解决办法
79
查看次数

创建新列以指示列名在另一个字符串向量中的位置(使用dplyr,purrr和stringr)

鉴于此示例数据:

require(stringr)
require(tidyverse)

labels <- c("foo", "bar", "baz")
n_rows <- 4

df <- 1:n_rows %>%
  map(~ data.frame(
      block_order=paste(sample(labels, size=length(labels), replace=FALSE),
                        collapse="|"))) %>%
  bind_rows()

df
  block_order
1 foo|bar|baz
2 baz|bar|foo
3 foo|baz|bar
4 foo|bar|baz
Run Code Online (Sandbox Code Playgroud)

我想为每个字符串生成一个列labels,它|在每行的分隔序列中获取该字符串的位置值.

期望的输出:

  block_order foo bar baz
1 foo|bar|baz   1   2   3
2 baz|bar|foo   3   2   1
3 foo|baz|bar   1   3   2
4 foo|bar|baz   1   2   3
Run Code Online (Sandbox Code Playgroud)

我一直在尝试dplyr/ purrrsetup中的不同变体,比如这个例子,我map在每个值中label,然后尝试在block_order使用match时获得它的位置str_split:

labels %>% …
Run Code Online (Sandbox Code Playgroud)

r stringr dplyr purrr

1
推荐指数
1
解决办法
68
查看次数

stringer 和 grepl 和 grep 中的 str_detect 函数有什么区别?

我开始在我的工作中做很多字符串匹配,我很好奇这三个函数之间的区别是什么,以及在什么情况下有人会使用一个而不是另一个。

r stringr grepl

1
推荐指数
1
解决办法
1855
查看次数

标签 统计

r ×10

stringr ×10

dplyr ×3

regex ×3

grepl ×2

tidyverse ×2

apply ×1

data.table ×1

grep ×1

list ×1

pattern-matching ×1

plyr ×1

purrr ×1