R 提取文本中下划线之间的数字
我有一些文件的名字像R 提取文本中下划线之间的数字,r,rstudio,special-characters,stringr,R,Rstudio,Special Characters,Stringr,我有一些文件的名字像 Hughson.George_54_4 Ifran.Dean_51_3 休斯顿,阿曼达,49,6 我想创建一个数据框,其中每一行都是以作者、卷、问题的形式从文件名中提取的信息 我能够提取名称和卷,但似乎无法获取发行号。使用“stringr”包,我完成了以下工作,这使我得到了\u4,而不仅仅是4 [^a-z](?:[^_]+_){0}([^_ ]+$) 如何修复此问题?如果它是最后一个数字,我们可以使用base R方法来提取它 as.numeric(substrin
- Hughson.George_54_4
- Ifran.Dean_51_3
- 休斯顿,阿曼达,49,6
\u4
,而不仅仅是4
[^a-z](?:[^_]+_){0}([^_ ]+$)
如何修复此问题?如果它是最后一个数字,我们可以使用
base R
方法来提取它
as.numeric(substring(str1, nchar(str1)))
或使用sub
as.numeric(sub(".*_", "", str1))
#[1] 4 3 6
如果我们需要将其拆分为单独的列,一个选项是
从tidyverse
中分离
,该选项将根据分隔符(
)将列拆分为单独的列,并确保列的类型为转换
library(tidyverse)
data_frame(col1 = str1) %>%
separate(col1, into = c("Author", "Volume", "Issue"), sep = "_", convert = TRUE)
# A tibble: 3 x 3
# Author Volume Issue
# <chr> <chr> <chr>
#1 Hughson.George 54 4
#2 Ifran.Dean 51 3
#3 Houston.Amanda 49 6
库(tidyverse)
数据帧(col1=str1)%>%
单独(col1,into=c(“作者”、“卷”、“发行”),sep=“”,convert=TRUE)
#一个tibble:3x3
#作者卷问题
#
#1休森,乔治54 4
#2伊夫兰院长51 3
#3休斯顿阿曼达496
数据
str1您正在寻找:
read.table(text = string, sep ='_', col.names = c('Author', 'Volume', 'Issue'))
Author Volume Issue
1 Hughson.George 54 4
2 Ifran.Dean 51 3
3 Houston.Amanda 49 6
read.table(text = string, sep ='_', fill=TRUE)
在哪里
string <- c("Hughson.George_54_4", "Ifran.Dean_51_3", "Houston.Amanda_49_6")
正则表达式的[^a-z]
部分与最后一个数字前面的\
匹配。只需使用与末尾数字匹配的内容:
x1 <- c("Hughson.George_54_4", "Ifran.Dean_51_3", "Houston.Amanda_49_6")
str_extract(x1,"([^_]+$)")
[1] "4" "3" "6"
str_extract(x1,"\\d+$")
[1] "4" "3" "6"
您好,所有这些文件都在一个文件夹中,我正在阅读它们,所以大约有1303个文件<代码>apapers@darkpunk没问题。你可以通过list.files
获得所有文件的名称,即tools::file\u path\u sans\u ext(basename(lis.files())
哦,阅读不是问题,我们的教授告诉我们有某种方式,我坚持这种方式,但会尝试一下这种方法。这只是一个小问题,我似乎不明白为什么额外的-你会试图与此工作,并检查。谢谢你!是的,separate
也做了这项工作。有很多种方法可以让你喜欢这一件事。惊人的帮助!是的,就是这样。只是一开始我需要建立一个语料库,从那时起我需要把它变成一个数据框架。是的,我已经创建了一个my.text.location,然后在字符串的位置放置纸片,并运行出现错误的CodeTested<代码>扫描中的错误(file=file,what=what,sep=sep,quote=quote,dec=dec,:第703行没有3个元素
这也可以,太棒了!这似乎是一个解决方案。谢谢。是的,整个工作只是创建数据框,但我的教授希望我们创建这些对象,如“作者”、“卷”等,然后使用它们来创建数据框数据帧。
x1 <- c("Hughson.George_54_4", "Ifran.Dean_51_3", "Houston.Amanda_49_6")
str_extract(x1,"([^_]+$)")
[1] "4" "3" "6"
str_extract(x1,"\\d+$")
[1] "4" "3" "6"
data.frame(do.call("rbind",strsplit(sub("\\."," ",x1),"_")))
X1 X2 X3
1 Hughson George 54 4
2 Ifran Dean 51 3
3 Houston Amanda 49 6