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

R语言data.frame如何基于price1-price4列新增final_price等两个指定变量

R语言实现方案

以下两种方案均可实现需求:

方案1:基础R实现(无需加载额外依赖包)

运行效率高,适合处理大数据量数据集:

# 提取目标价格列
price_cols <- paste0("price", 1:4)
price_matrix <- as.matrix(ori_data[, price_cols])

# 定位每行第一个非0值的列索引
first_nonzero_idx <- max.col(price_matrix != 0, ties.method = "first")

# 生成两个新变量
ori_data$final_price <- price_matrix[cbind(seq(nrow(price_matrix)), first_nonzero_idx)]
ori_data$final_price_from <- price_cols[first_nonzero_idx]

方案2:tidyverse 风格实现

代码可读性强,适合纳入tidy数据处理工作流:

library(dplyr)

ori_data <- ori_data %>%
  rowwise() %>%
  mutate(
    first_nonzero_pos = which(c_across(starts_with("price")) != 0)[1],
    final_price = get(paste0("price", first_nonzero_pos)),
    final_price_from = paste0("price", first_nonzero_pos)
  ) %>%
  ungroup() %>%
  select(-first_nonzero_pos)

说明:如果某行所有price列均为0(如示例数据中的category为i的行),上述方案会返回NA,可根据业务需要自行添加判断逻辑设置默认值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 12:24:02