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

R语言中按条件为数据框新增列(Stop前一行标记No)实现咨询

R语言实现方案

你已经完成了基础逻辑的赋值,只需额外定位所有Stop行的前一行,将对应值覆盖为No即可。

基础R实现(无需第三方包)

# 构造示例数据
stim <- c("a", "k", "y", "j", "t", "Stop", "f", "l", "b", "a", "c", "Stop")
df <- data.frame(stim)

# 基础逻辑赋值
df$YesorNo <- ifelse(df$stim == "Stop", "N/A", "yes")

# 定位所有Stop的行索引
stop_pos <- which(df$stim == "Stop")
# 过滤首行就是Stop的边界场景,避免索引为0报错
prev_pos <- stop_pos[stop_pos > 1] - 1
# 前一行赋值为No
df$YesorNo[prev_pos] <- "No"

运行后输出结果和你的预期完全一致。

dplyr实现(适合管道流写法)

如果日常使用tidyverse生态,可以用lead()函数更直观实现逻辑:

library(dplyr)
df <- df %>%
  mutate(YesorNo = case_when(
    stim == "Stop" ~ "N/A",
    lead(stim, default = "") == "Stop" ~ "No",
    TRUE ~ "yes"
  ))

lead(stim)会取当前行下一行的stim值,直接判断下一行是否为Stop即可给当前行打标,default参数处理最后一行不是Stop的场景,避免返回空值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 02:57:01