我在数据框列中有一个数据 -
X_ABC_123_DF</n>
A_NJU_678_PP</n>
J_HH_99_LL</n>
II_00_777_PPP</n>
我想提取数据框中每一行的第二个和第三个下划线之间的值,我计划创建一个新列并存储这些值。我找到了下面提到的一种方法,但他们没有提到如何用 R 写这个。我不知道如何编写它的正则表达式函数。
^(?:[^_]+_){2}([^_ ]+)<br>
提取第二个下划线和第三个下划线或空格之间的单词 https://stackoverflow.com/questions/42853709/extract-word-between-2nd-underscore-and-3rd-underscore-or-space
几个解决方案:
df$values = sapply(strsplit(df$V1, "_"), function(x) x[3])
df$values = gsub("(.*_){2}(\\d+)_.+", "\\2", df$V1)
library(dplyr)
library(stringr)
df %>%
mutate(values = str_extract(V1, "\\d+(?=_[a-zA-Z]+.+$)"))
Result:
V1 values
1 X_ABC_123_DF</n> 123
2 A_NJU_678_PP</n> 678
3 J_HH_99_LL</n> 99
4 II_00_777_PPP</n> 777
Data:
df = read.table(text = "X_ABC_123_DF</n>
A_NJU_678_PP</n>
J_HH_99_LL</n>
II_00_777_PPP</n>", stringsAsFactors = FALSE)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)