首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >与str_replace_all一起使用时setNames中的奇怪字符行为

与str_replace_all一起使用时setNames中的奇怪字符行为
EN

Stack Overflow用户
提问于 2020-09-23 21:46:20
回答 2查看 87关注 0票数 1

我有一个数据集,其中的年龄被编码为值1-9,但是,当我做一些名称连接在一起时,我想交换定义。我想这和我想要做的定义中的"-“字有关。我需要做什么,以使字符不会产生意外的返回,因为在其他情况下,我试图用包含"/“的定义替换代码。

简单例子

代码语言:javascript
运行
复制
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+"      
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-09-23 22:12:23

str_replace_all可能存在与regex模式相关的问题。一个更简单的选项是使用命名向量的base R来匹配和替换

代码语言:javascript
运行
复制
df.1$patient_age <- setNames(age.pattern$key, 
                         age.pattern$value)[as.character(df.1$age)]
票数 0
EN

Stack Overflow用户

发布于 2020-09-24 04:22:03

因为您想在这里进行精确的匹配,所以我们可以使用match

代码语言:javascript
运行
复制
head(df.1$age, 10)
#[1] 6 3 7 1 4 9 8 3 5 4

head(age.pattern$key[match(df.1$age, age.pattern$value)], 10)
#[1] "60-64" "10-19" "65-74" "0-2" "20-39" "85+" "75-84" "10-19" "40-59" "20-39"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64036708

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档