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

R语言根据dataframe指定列字符串值填充新列为其他列数值

R语言多条件列填充实现方案

前提说明

R的数值类型变量无法存储|这类非数字符号,因此无法在保留数值类型的同时实现V1|V2的展示效果,以下提供两种符合需求的可选实现方案。

先构造示例数据:

df <- structure(list(V1 = 1:10, V2 = 6:15, V3 = c("P", "P", "N", "B", "P", "B", "N", "N", "P", "P")), row.names = c(NA, -10L), class = "data.frame")

方案1:实现V1|V2展示效果(V4为字符型)

该方案输出完全匹配期望展示格式,V4为字符类型。

基础R实现

df$V4 <- ifelse(df$V3 == "P", df$V1,
                ifelse(df$V3 == "N", df$V2,
                       paste(df$V1, df$V2, sep = "|")))

tidyverse实现

library(dplyr)
df <- df %>%
  mutate(V4 = case_when(
    V3 == "P" ~ as.character(V1),
    V3 == "N" ~ as.character(V2),
    V3 == "B" ~ paste(V1, V2, sep = "|")
  ))

方案2:保持V4为数值型(B类取V1/V2较大值)

该方案输出的V4为纯数值类型,可直接参与后续数值计算,V3为"B"时取两列最大值。

基础R实现

df$V4 <- ifelse(df$V3 == "P", df$V1,
                ifelse(df$V3 == "N", df$V2,
                       pmax(df$V1, df$V2)))

tidyverse实现

library(dplyr)
df <- df %>%
  mutate(V4 = case_when(
    V3 == "P" ~ V1,
    V3 == "N" ~ V2,
    V3 == "B" ~ pmax(V1, V2)
  ))

内容的提问来源于stack exchange,提问作者Mr.Spock

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 13:48:02