[英]how to select an exact match using grep in R to subset a dataframe
我曾嘗試在data[grep(14,data$x,fixed=TRUE),]
使用fixed as ,但它匹配data$x == 14
、 data$x == 1144
或data$x
包含 14 的任何行data$x
字段。
您可以在正則表達式中使用\\\\b
來檢測單詞邊界。
例如:
data <- data.frame(field=c(14,1144,"test14test","test 14 test"))
grep("\\b14\\b",data$field)
#[1] 1 4
如果data$field
只是數字,@Pierre Lafortune 的解決方案可能更合適。
grep() 函數匹配一個模式,這就是它匹配“14”和“1144”的原因正如皮埃爾在他的評論中指出的那樣,您可以將模式更改為正則表達式“^14$”。 ^ 要求它以該模式開始,而 $ 要求它以該模式結束。 這將為您提供精確匹配。
另一種對數據進行子集化的好方法是使用 subset() 函數。
data_subset <- subset(data, x == "14")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.