我的樣本資料是:
c("2\tNO PEMJNUM\t 2\tALTOGETHER HOW MANY JOBS\t216 - 217",
"1\tREFERENCE PERSON 2\tSPOUSE 3\tCHILD 4\tOTHER RELATIVE (PRIMARY FAMILY & UNREL) PRFAMTYP\t2\tFAMILY TYPE RECODE\t155 - 156",
"5\tUNABLE TO WORK PUBUS1\t 2\tLAST WEEK DID YOU DO ANY\t184 - 185",
"2\tNO PEIO1COW\t 2\tINDIVIDUAL CLASS OF WORKER CODE\t432 - 433"
對于每一行,我都希望提取(它們是變數名稱):
第 1 行:“PEMJNUM” 第 2 行:“PRFAMTYP” 第 3 行:“PUBUS1” 第 4 行:“PEIO1COW”
我最初的目標是 gsub 洗掉每個變數名稱左側和右側的字符以僅保留變數名稱,但我只能抓取變數名稱右側的所有內容,并且在抓取左側字符時遇到問題。(如此處所示https://regexr.com/67r6j)。
不知道是否有更好的方法來做到這一點!
uj5u.com熱心網友回復:
您可以通過sub以下方式使用:
x <- c("2\tNO PEMJNUM\t 2\tALTOGETHER HOW MANY JOBS\t216 - 217",
"1\tREFERENCE PERSON 2\tSPOUSE 3\tCHILD 4\tOTHER RELATIVE (PRIMARY FAMILY & UNREL) PRFAMTYP\t2\tFAMILY TYPE RECODE\t155 - 156",
"5\tUNABLE TO WORK PUBUS1\t 2\tLAST WEEK DID YOU DO ANY\t184 - 185",
"2\tNO PEIO1COW\t 2\tINDIVIDUAL CLASS OF WORKER CODE\t432 - 433")
sub("^(?:.*\\b)?(\\w )\\s*\\b2\\b.*", "\\1", x, perl=TRUE)
# => [1] "PEMJNUM" "PRFAMTYP" "PUBUS1" "PEIO1COW"
請參閱在線正則運算式演示和R 演示。
詳情:
^- 字串的開始(?:.*\b)?- 一個可選的非捕獲組,匹配盡可能多的零個或多個字符(除了我使用的perl=TRUE換行符,如果您也需要匹配換行符,請(?s)在模式開頭添加),然后是單詞邊界位置(\w )- 第 1 組 (\1):一個或多個單詞字符\s*- 零個或多個空格\b- 一個詞邊界2- 一個2數字\b- 一個詞邊界.*- 行/字串的其余部分。
如果之前總是有空格2,則正則運算式可以寫成"^(?:.*\\b)?(\\w )\\s 2\\b.*".
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/327574.html
上一篇:在R中的多列中計算NA
