【发布时间】:2026-01-28 13:30:01
【问题描述】:
我有一个数据集,其中年龄编码为值 1-9,我想交换定义,但是当我这样做时,一些名称被连接在一起。我认为它与我正在尝试做的定义中的“-”字符有关。我需要做什么才能使字符不会导致意外返回,因为在我尝试用包含“/”的定义替换代码的其他情况下也会发生这种情况。
简单示例
library(tidyverse)
df.1 <- data.frame(age = round(runif(n = 50, 1, 9),0))
age.pattern <- as.data.frame(cbind(value = 1:9, key = c("0-2",
"3-9",
"10-19",
"20-39",
"40-59",
"60-64",
"65-74",
"75-84",
"85+")),
stringsAsFactors = F)
df.2 <- df.1 %>%
mutate(patient_age = str_replace_all(age,
setNames(age.pattern$key,
age.pattern$value)))
unique(df.2$patient_age)
[1] "75-84" "20-385+" "10-185+"
[4] "10-185+-85+" "60-64" "65-74"
[7] "0-10-185+-85+" "85+" "40-585+"
【问题讨论】:
-
我认为您的意思是
fixed与regex案例?默认情况下,它使用正则表达式模式,在正则表达式中,-用于范围 -
@akrun 我更新了问题以包含我看到的输出
-
你可以使用
base RsetNames(age.pattern$key, age.pattern$value)[as.character(head(df.1$age))] -
@akrun 是的,我想这会奏效