簡體   English   中英

刪除所有包含以 R 中特定字符串結尾的字符串的行 - grepl

[英]remove all rows with a character string ending with a specific string in R - grepl

我想刪除所有以“_bundle”結尾的行。 我嘗試了兩種不同的方法,但如果有效,則沒有

claimsVolumeSC <- basisPerClaim[!grepl( '$_bundle', basisPerClaim$subcoveragekey),]
levels(claimsVolumeSC$subcoveragekey)
claimsVolumeSC <- basisPerClaim[!grepl( '\\>_bundle', basisPerClaim$subcoveragekey),]
levels(claimsVolumeSC$subcoveragekey)

我怎樣才能實現我想要的? 為什么到目前為止我嘗試過的方法不起作用?

> claimsVolumeSC <- basisPerClaim[!grepl( '$_bundle', basisPerClaim$subcoveragekey),]
> levels(claimsVolumeSC$subcoveragekey)
[1] "DA_Chemo"         "Daily_cash"       "Funeral"          "IP_Accommodation" "IP_bundle"        "IP_Upgrade"       "OP_Dialysis"     
[8] "OP_Physio"       
> claimsVolumeSC <- basisPerClaim[!grepl( '\\>_bundle', basisPerClaim$subcoveragekey),]
> levels(claimsVolumeSC$subcoveragekey)
[1] "DA_Chemo"         "Daily_cash"       "Funeral"          "IP_Accommodation" "IP_bundle"        "IP_Upgrade"       "OP_Dialysis"     
[8] "OP_Physio"   

解決方案可能是這個基於正則表達式的:

可重復數據

set.seed(123)
df <- data.frame(
  Var1 = rnorm(100),
  Var2 = sample(c(paste0(LETTERS[1:10],letters[10:18], letters[18:26], letters), paste0(letters[1:10],"bundle")), 100, replace = T),
  Var3 = sample(c(paste0(LETTERS[1:10],letters), paste0(letters[1:10],"bundle")), 100, replace = T))

head(df)
         Var1    Var2    Var3
1 -0.56047565    Irzi cbundle
2 -0.23017749 ibundle      Aa
3  1.55870831    Bmuv cbundle
4  0.07050839    Ijrs abundle
5  0.12928774    Eowo      Cw
6  1.71506499 fbundle      Hr

解決方案

在這里,我們paste0所有行在一起,匹配所有bundle使用字符串grepl和減( -的數據幀的那些行which匹配的模式:

df[-which(grepl("bundle", apply(df, 1, paste0, collapse = " "))),]

結果

如果我們將子集數據幀存儲為df2 ,結果是這樣的:

df2 <- df[-which(grepl("bundle", apply(df, 1, paste0, collapse = " "))),]

head(df2)
         Var1 Var2 Var3
5   0.1292877 Eowo   Cw
7   0.4609162 Dnvn   Ff
8  -1.2650612 Aksk   Aa
9  -0.6868529 Gpxg   Gq
10 -0.4456620 Gpxg   Hr
11  1.2240818 Hrzr   Eo

注意

如果要匹配的字符串分散在多個列中,則此解決方案很有用。 如果匹配僅出現在單個列中,則正常的子集化過程就足夠了。

您可以將subsetgrepl一起grepl

claimsVolumeSC <- subset(basisPerClaim, !grepl( '_bundle$', subcoveragekey))

如果您不想要數據中的因素,請將它們更改為字符。

claimsVolumeSC$subcoveragekey <- as.character(claimsVolumeSC$subcoveragekey)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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