使用ifelse或循环修改tibble变量遇阻:无法修改桑德斯党派
问题分析与解决
你的代码里第二个mutate_if用法错误,mutate_if的第一个参数是用来判断哪些列需要被修改的逻辑条件(比如判断列是否为数值型),而非筛选行的条件。要修改特定行的列值,应该用mutate配合ifelse实现行级条件赋值。
正确写法(两种方式)
方式1:通过年龄匹配(适用于仅Bernice Sanders年龄为79的场景)
prez <- readr::read_csv('https://raw.githubusercontent.com/dereksonderegger/444/master/data-raw/Prez_Candidate_Birthdays') # 统一党派名称格式 prez <- prez %>% mutate(Party = ifelse(Party == 'D', 'Democratic', 'Republican')) # 修改目标行的党派 prez <- prez %>% mutate(Party = ifelse(AgeOnElection == 79, 'Independent', Party))
方式2:通过姓名匹配(更精准,避免年龄重复的误改)
prez <- readr::read_csv('https://raw.githubusercontent.com/dereksonderegger/444/master/data-raw/Prez_Candidate_Birthdays') prez <- prez %>% mutate(Party = ifelse(Party == 'D', 'Democratic', 'Republican')) %>% mutate(Party = ifelse(Name == 'Bernice Sanders', 'Independent', Party))
补充说明
mutate用于添加或修改列,搭配ifelse可实现行级条件赋值:满足条件时替换为新值,不满足时保留原列值。- 若需处理多条件的行级修改,用
case_when替代ifelse会让逻辑更清晰易读。
内容的提问来源于stack exchange,提问作者khali-blinks
相关产品推荐
相关产品推荐

