You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于tibble列部分匹配修改分类列值时非匹配项变NA问题求助

问题原因及解决方法

问题根源

你代码里的mutate(catag = "Uncategorised")通过管道输出到print,但没有将结果重新赋值给f2,导致原数据框f2根本没添加catag列。后续直接用f2$catag[...]赋值时,R会自动创建catag列,未被赋值的位置默认填充NA,这就是非匹配项变成NA的原因。

修正方案

方案1:修正原代码的赋值问题

把mutate后的结果存回f2,再进行后续修改:

free <- c("journal & radius wear damage","residual magnetism","damaged wheel","gouge in edge","wheel seat")

f2 <- tibble(free)
# 将mutate的结果重新赋值给f2
f2 <- f2 %>%
  mutate(catag = "Uncategorised")

# 匹配含'wheel'的项并修改
f2$catag[grepl("wheel", f2$free)] <- "Wheel related issue"

print(f2)

方案2:用dplyr风格统一处理(更推荐)

直接在管道里用case_when完成条件赋值,避免混合使用基础R和tidyverse语法:

free <- c("journal & radius wear damage","residual magnetism","damaged wheel","gouge in edge","wheel seat")

f2 <- tibble(free) %>%
  mutate(catag = case_when(
    grepl("wheel", free) ~ "Wheel related issue",
    TRUE ~ "Uncategorised"  # 其他情况保留默认值
  ))

print(f2)

运行结果

两种方案都会得到正确输出:

freecatag
journal & radius wear damageUncategorised
residual magnetismUncategorised
damaged wheelWheel related issue
gouge in edgeUncategorised
wheel seatWheel related issue

内容的提问来源于stack exchange,提问作者fake fake

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 14:21:06