R根据R中相同字符串的If函数从字符串返回N个字符

R根据R中相同字符串的If函数从字符串返回N个字符,r,string,dataframe,if-statement,conditional-statements,R,String,Dataframe,If Statement,Conditional Statements,我在R中构建了一个数据框架,其中包含大量ICD-10诊断类别。它们都由一个字母和三个数字组成。我想做的是根据以下条件创建一个新列: 如果字符串位置#1的字母=C或D,则返回字母和第一个数字(字符串位置2),否则仅返回第一个字母 所以我希望我的输出像这样: ICD10 <- c("A123","B123","C123","D123", "E123") return <- c("

我在R中构建了一个数据框架,其中包含大量ICD-10诊断类别。它们都由一个字母和三个数字组成。我想做的是根据以下条件创建一个新列: 如果字符串位置#1的字母=C或D,则返回字母和第一个数字(字符串位置2),否则仅返回第一个字母

所以我希望我的输出像这样:

ICD10 <- c("A123","B123","C123","D123", "E123")
return <- c("A","B","C1","D1","E")
df <- data.frame(ICD10, shortcd)


ICD10我们可以使用
substr

substr(ICD10, start = 1, stop = ifelse(grepl('^C|D', ICD10), 2, 1))
#[1] "A"  "B"  "C1" "D1" "E" 

或者使用
regex

sub("^((C|D)\\d)(*SKIP)(*FAIL)|\\d+", "", ICD10, perl = TRUE)
#[1] "A"  "B"  "C1" "D1" "E" 

您可以按以下方式使用
str\u extract
-

df$res <- stringr::str_extract(df$ICD10, '[CD]\\d|[A-Z]')
df$res
#[1] "A"  "B"  "C1" "D1" "E"

df$res也许:
shortcd非常感谢!非常好@健康代码32请您检查一下,非常感谢。这也很有效@HealthyCode32很高兴得到帮助!点击左边的复选标记,您可以随意接受其中一个最适合您的答案。每个帖子只能接受一个答案。提及-