我有一个由单词组成的列表.
> 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) 我试图通过使用下面的代码找到(然后提取)重复的短语.我要求以"大约"开头并以"关闭"结尾的短语.
例如,"总资产约为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表达错误,因为我是新手,所以任何建议都非常感激.
我有一个大数据表,我想检查是否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万行).
我想获取变量的最后一个子字符串(下划线后的最后一部分),在这种情况下:"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中执行此操作?
我有这样的数据
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 …
我想在每个字符串中找到大写字母,并计算每个字符串的数量,例如
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
我正在尝试使用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里做了一些关于葡萄酒评论的数据争论,但却找不到一种优雅的方式去做我想做的事情.
我的目标是查看通常包含葡萄酒年份的葡萄酒评论的标题栏,并将该年份放在不同的栏目中.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) 鉴于此示例数据:
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) 我开始在我的工作中做很多字符串匹配,我很好奇这三个函数之间的区别是什么,以及在什么情况下有人会使用一个而不是另一个。