如何过滤以 R 中的任何拉丁字母开头的所有行
示例代码不起作用
library(dplyr)
df <- data.frame( marks = c(20.1, 30.2, 40.3, 50.4, 60.5),
age = c(21:25),
roles = c('Software Eng.', 'Software Dev',
'Data Analyst', 'Data Eng.',
'5Sigma'))
df %>% filter(grep("[A-z]", roles))
Run Code Online (Sandbox Code Playgroud)
所需输出
marks age roles
1 20.1 21 Software Eng.
2 30.2 22 Software Dev
3 40.3 23 Data Analyst
4 50.4 24 Data Eng.
Run Code Online (Sandbox Code Playgroud) 在下面的数据框中,我尝试构建一个新列“avcomp”,如果 Duty_nature 是“M”或“C”,它会从“code”列中提取空格和% 符号之间的数值。我尝试了下面的代码,但它只能获取前两个数字和百分号。你能帮忙吗?
avcomp 列应为
>[1] "30", "0.50, ""
Run Code Online (Sandbox Code Playgroud)
谢谢你!
code <- c("Greater than 30% of something","Less than 0.50% of something","30%")
duty_nature<- c("M","C","A")
test <-data.frame(code,duty_nature)
test$avcomp <- ifelse(test$duty_nature == "M" | test$duty_nature == "C",str_sub(str_match(test$code,"\\s*(.*?)%\\s*"),-4,-1),"")
Run Code Online (Sandbox Code Playgroud) 假设我有一个如下所示的 txt 文件
aaaaaaaaaaaaaaaadddddddddddddssssssssssbbbbbbbbbbbbbccccccccccxxxxxxxxxxsddddddaaasdadvvvvvvvvbbbbbbbaxxxxnnnnnnnnnwwwwwwwwwwwwww
Run Code Online (Sandbox Code Playgroud)
str_split()这种情况我该如何申请?
我正在尝试计算这个txt文件中出现了多少个字母“a”
这是我到目前为止所拥有的,
aaaaaaaaaaaaaaaadddddddddddddssssssssssbbbbbbbbbbbbbccccccccccxxxxxxxxxxsddddddaaasdadvvvvvvvvbbbbbbbaxxxxnnnnnnnnnwwwwwwwwwwwwww
Run Code Online (Sandbox Code Playgroud)
然后我跑了str_length(str_detect(mytxtfile, "a"))
该函数的结果少于 9,我相信我在使用时做错了什么str_split()
请帮忙!
我从 XML 文件中抓取了一些文本块,这些文本块经常缺少句子之间的空格。我已经str_split成功地将这些块分解成易于理解的句子,如下所示:
list_of_strings <- str_split(chunk_of_text, pattern=boundary("sentence")
Run Code Online (Sandbox Code Playgroud)
这工作得很好,但它不能处理终止句号后面没有空格的情况。例如,"This sentence ends.This sentence continues." 它返回 1 个句子,而不是两个。
使用str_splitwithpattern=boundary("sentence")不起作用。
如果我搜索句点并将其替换为句点空格,当然会弄乱 1.5 磅之类的数字。
我探索过使用通配符来检测情况,例如,
str_view_all(x, "[[:alpha:]]\\.[[:alpha:]]"))
Run Code Online (Sandbox Code Playgroud)
但我不知道如何 1) 在句点后插入一个空格,以便后续对 str_split 的调用正常工作,或 2) 在句点处拆分。
发生这种情况时,有什么关于分隔句子的建议吗?
R程序员新手,感谢您的帮助!
我重现了我的问题的简单版本。我本质上想将所有语句的语句列中的英语单词替换为西班牙语等效单词。
library(tidyverse)
english <- c('hello','world','my','name', 'is')
spanish <- c('hola','mundo','mi','nombre', 'es')
statement <-c('Hello my name is john doe',' hello world','my name is world','hello john, my world is','jane is my world ')
df <- data.frame(english,spanish,statement)
df
Run Code Online (Sandbox Code Playgroud)
我试过
df %>%
str_replace_all(statement, c(df$english), c(df$spanish))
Run Code Online (Sandbox Code Playgroud)
和
str_replace_all(statement, c(df$english), c(df$spanish)).
Run Code Online (Sandbox Code Playgroud)
第二次尝试让我更接近我的答案。仅替换了一个答案。
我正在尝试使用Stringr库从大而凌乱的文件中提取电子邮件。
str_match不允许perl = TRUE,而且我无法弄清楚转义字符以使其正常工作。
有人可以推荐一种相对健壮的正则表达式,该正则表达式可以在以下情况下使用吗?
c("larry@gmail.com", "larry-sally@sally.com", "larry@sally.larry.com")->emails
"SomeRegex"->regex
str_match(emails, regex)
Run Code Online (Sandbox Code Playgroud) 如何将由多个定界符分隔的列拆分为数据框中的单独列
read.table(text = " Chr Nm1 Nm2 Nm3
chr10_100064111-100064134+Nfif 20 20 20
chr10_100064115-100064138-Kitl 30 19 40
chr10_100076865-100076888+Tert 60 440 18
chr10_100079974-100079997-Itg 50 11 23
chr10_100466221-100466244+Tmtc3 55 24 53", header = TRUE)
Chr gene Nm1 Nm2 Nm3
chr10_100064111-100064134 Nfif 20 20 20
chr10_100064115-100064138 Kitl 30 19 40
chr10_100076865-100076888 Tert 60 440 18
chr10_100079974-100079997 Itg 50 11 23 12
chr10_100466221-100466244 Tmtc3 55 24 53 12
Run Code Online (Sandbox Code Playgroud)
我用了
library(stringr)
df2 <- str_split_fixed(df1$name, "\\+", 2)
Run Code Online (Sandbox Code Playgroud)
我想知道我们如何同时包含+和-分隔符
经过几个小时的谷歌搜索和徒劳无功的尝试,我希望有人可以帮助解决这个公认的简单问题(虽然显然我的regexps是相当陌生的).
我有以下类型的数据:
name <- c("Doe, Mr. John")
Run Code Online (Sandbox Code Playgroud)
我想要"先生",但实际的标题各不相同.我的主要问题是我如何编写正则表达式来捕获"先生"部分,而没有其他任何东西?
我目前的做法如下:
library(stringr)
str_split(name, "[,\\s.]")[[1]][[3]]
Run Code Online (Sandbox Code Playgroud)
我设法使用提取做的最好的是:
str_extract(name, ", .*\\.")
Run Code Online (Sandbox Code Playgroud)
我确信有一种更简单的方法,任何人都可以帮助我吗?
我需要用80英寸的气缸,齿轮和碳水化合物色谱柱替换非4色谱柱。我尝试了以下操作,但是不起作用。
mtcars %>% mutate_at(vars(cyl, gear, carb), replace(which(.!=4), 80))
Run Code Online (Sandbox Code Playgroud)
它引发以下错误:
Error in replace(which(. != 4), 80) :
argument "values" is missing, with no default
Run Code Online (Sandbox Code Playgroud)
我在这里想念什么?
所有这些看似非常相似的功能之间有什么区别?