如何在 R 中同时使用 startsWith 和 str_length 和多个前缀
How to use startsWith and str_length simultaneously with multiple prefixes in R
我想使用 startsWith 和 str_length 来识别 endpt_ds$DX1 中以 dx9 中的字符串开头且前缀长度大于或等于 3 的条目. 这是我尝试过的方法,但它 return 是一个零行的数据框。我想要 return 一个数据框,其中包含原始数据框的第 1、4 和 5 行:
dx9 = c(as.character(8:10))
DX1 <- c("8001","7","80","992","1010","93","400")
ind <- c(0,1,1,1,0,0,1)
yrMonth_ds = as.data.frame(cbind(DX1,ind))
yrMonth_ds$DX1 <- as.character(yrMonth_ds$DX1)
yrMonth_ds_endpt <- yrMonth_ds[which(startsWith(yrMonth_ds$DX1,paste0(dx9,collapse="|")) & str_length(yrMonth_ds$DX1 > 3)),]
yrMonth_ds_endpt
如果有任何帮助,我将不胜感激。谢谢!
一个选项是用 nchar
检查字符数,用它创建一个逻辑表达式,此外通过将 'dx9' 折叠成一个模式来使用 paste
使用 ^
指定字符串开头的字符串,并使用 grepl
到 return 检查 'DX1' 通过两个逻辑
的行
subset(yrMonth_ds, nchar(DX1) >=3 &
grepl(paste0("^(", paste(dx9, collapse="|"), ")"), DX1))
# DX1 ind
#1 8001 0
#4 992 1
#5 1010 0
我想使用 startsWith 和 str_length 来识别 endpt_ds$DX1 中以 dx9 中的字符串开头且前缀长度大于或等于 3 的条目. 这是我尝试过的方法,但它 return 是一个零行的数据框。我想要 return 一个数据框,其中包含原始数据框的第 1、4 和 5 行:
dx9 = c(as.character(8:10))
DX1 <- c("8001","7","80","992","1010","93","400")
ind <- c(0,1,1,1,0,0,1)
yrMonth_ds = as.data.frame(cbind(DX1,ind))
yrMonth_ds$DX1 <- as.character(yrMonth_ds$DX1)
yrMonth_ds_endpt <- yrMonth_ds[which(startsWith(yrMonth_ds$DX1,paste0(dx9,collapse="|")) & str_length(yrMonth_ds$DX1 > 3)),]
yrMonth_ds_endpt
如果有任何帮助,我将不胜感激。谢谢!
一个选项是用 nchar
检查字符数,用它创建一个逻辑表达式,此外通过将 'dx9' 折叠成一个模式来使用 paste
使用 ^
指定字符串开头的字符串,并使用 grepl
到 return 检查 'DX1' 通过两个逻辑
subset(yrMonth_ds, nchar(DX1) >=3 &
grepl(paste0("^(", paste(dx9, collapse="|"), ")"), DX1))
# DX1 ind
#1 8001 0
#4 992 1
#5 1010 0