当位置随机时,从 R 中的自由文本字符变量中提取特定文本
Subset specific text from a free-text character variable in R when the position is random
我有一个数据框,看起来有点像
uniqueID <- sample(1:10, 3, replace=F)
faultDetails <- c("fault is blah blah blah and serial is F1AB3CDE123", "Serial No: f1ds6hrc813, fault is blah blah blah", "fault: blah blah blah serial number: F2GE8FDW159")
myData <- cbind.data.frame(uniqueID, faultDetails)
我需要从每个条目中提取序列号并存储在一个新变量中,但是字段中的位置不固定。唯一不变的是序列号的格式为 F,数字,字母,字母,数字,字母,字母,字母,数字,数字,数字。此外,文本的大小写会随着条目的不同而变化(哦,自由文本的乐趣!)。
我想将此作为我的 dplyr 管道的一部分。感谢任何帮助。
大小写与正确的正则表达式无关。我会这样处理:
library(dplyr)
library(stringr)
uniqueID <- sample(1:10, 3, replace=F)
faultDetails <- c("fault is blah blah blah and serial is F1AB3CDE123", "Serial No: f1ds6hrc813, fault is blah blah blah", "fault: blah blah blah serial number: F2GE8FDW159")
myData <- cbind.data.frame(uniqueID, faultDetails) %>%
mutate(serial_number = str_extract(faultDetails,
"(F|f)\d{1}\w{2}\d{1}\w{3}\d{3}"))
myData
uniqueID faultDetails serial_number
1 7 fault is blah blah blah and serial is F1AB3CDE123 F1AB3CDE123
2 9 Serial No: f1ds6hrc813, fault is blah blah blah f1ds6hrc813
3 3 fault: blah blah blah serial number: F2GE8FDW159 F2GE8FDW159
\w
元字符查找 "word characters";在这里它用于查找字母(尽管它也会检测下划线)。 \w{2}
符号表示我想要两个这样的字符的序列。 \d
元字符查找数字,大括号中的数字是要查找的序列长度。
正则表达式以 (F|f)
开头意味着它可以以 F
或 f
开头。
我有一个数据框,看起来有点像
uniqueID <- sample(1:10, 3, replace=F)
faultDetails <- c("fault is blah blah blah and serial is F1AB3CDE123", "Serial No: f1ds6hrc813, fault is blah blah blah", "fault: blah blah blah serial number: F2GE8FDW159")
myData <- cbind.data.frame(uniqueID, faultDetails)
我需要从每个条目中提取序列号并存储在一个新变量中,但是字段中的位置不固定。唯一不变的是序列号的格式为 F,数字,字母,字母,数字,字母,字母,字母,数字,数字,数字。此外,文本的大小写会随着条目的不同而变化(哦,自由文本的乐趣!)。
我想将此作为我的 dplyr 管道的一部分。感谢任何帮助。
大小写与正确的正则表达式无关。我会这样处理:
library(dplyr)
library(stringr)
uniqueID <- sample(1:10, 3, replace=F)
faultDetails <- c("fault is blah blah blah and serial is F1AB3CDE123", "Serial No: f1ds6hrc813, fault is blah blah blah", "fault: blah blah blah serial number: F2GE8FDW159")
myData <- cbind.data.frame(uniqueID, faultDetails) %>%
mutate(serial_number = str_extract(faultDetails,
"(F|f)\d{1}\w{2}\d{1}\w{3}\d{3}"))
myData
uniqueID faultDetails serial_number
1 7 fault is blah blah blah and serial is F1AB3CDE123 F1AB3CDE123
2 9 Serial No: f1ds6hrc813, fault is blah blah blah f1ds6hrc813
3 3 fault: blah blah blah serial number: F2GE8FDW159 F2GE8FDW159
\w
元字符查找 "word characters";在这里它用于查找字母(尽管它也会检测下划线)。 \w{2}
符号表示我想要两个这样的字符的序列。 \d
元字符查找数字,大括号中的数字是要查找的序列长度。
正则表达式以 (F|f)
开头意味着它可以以 F
或 f
开头。