[英]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
注意:
如果要匹配的字符串分散在多個列中,則此解決方案很有用。 如果匹配僅出現在單個列中,則正常的子集化過程就足夠了。
您可以將subset
與grepl
一起grepl
claimsVolumeSC <- subset(basisPerClaim, !grepl( '_bundle$', subcoveragekey))
如果您不想要數據中的因素,請將它們更改為字符。
claimsVolumeSC$subcoveragekey <- as.character(claimsVolumeSC$subcoveragekey)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.