簡體   English   中英

如何在R中使用grep選擇精確匹配來對數據幀進行子集

[英]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 == 14data$x == 1144data$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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM