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

如何按Description列匹配行替换DataFrame中指定列的特定值?

解决方案:基于列值匹配修改DataFrame指定行

要避免行位置变化导致的修改失效,核心是基于Description列的具体值("15A")动态定位目标行,而非依赖固定行索引。以下是两种可靠实现方式:

方法一:基础R原生语法

直接使用逻辑条件筛选目标行,对指定列赋值:

# 原始数据
df <- data.frame(  
  Description = c("15A","11","12"),
  Value = c(200,196,NA),
  Value1 = c(300,196,NA),
  ValueTested = c(20,10,NA),
  ApplyValues = c(60,10,NA)
)

# 基于Description值匹配修改
df$Value[df$Description == "15A"] <- 100
df$Value1[df$Description == "15A"] <- 150

# 查看修改后结果
df

运行后输出:

Description Value Value1 ValueTested ApplyValues
1         15A   100    150          20          60
2          11   196    196          10          10
3          12    NA     NA          NA          NA

方法二:tidyverse/dplyr风格(推荐,可读性更强)

如果日常使用tidyverse工具链,用mutate()结合if_else()实现条件赋值:

library(dplyr)

# 原始数据
df <- data.frame(  
  Description = c("15A","11","12"),
  Value = c(200,196,NA),
  Value1 = c(300,196,NA),
  ValueTested = c(20,10,NA),
  ApplyValues = c(60,10,NA)
)

# 条件修改指定列
df <- df %>%
  mutate(
    Value = if_else(Description == "15A", 100, Value),
    Value1 = if_else(Description == "15A", 150, Value1)
  )

# 查看结果
df

关键优势

两种方法都通过Description == "15A"的逻辑判断动态定位行,无论数据排序、新增/删除行,只要Description值为"15A",就能精准修改对应行的列值,彻底避免行位置依赖带来的错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 05:45:39