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

如何用R在数据框中基于两列分类值生成新列

分类数据框生成新列的实现方案

R语言实现

方法1:使用dplyr的case_when(推荐)

case_when适合多条件分支场景,语法直观易读:

library(dplyr)

# 假设你的数据框名为df
df <- df %>%
  mutate(new_col = case_when(
    col1 == "T1" & col2 == "T1" ~ "T1",
    col1 == "T3" & col2 == "T3" ~ "T3",
    TRUE ~ NA_character_  # 其余情况返回NA
  ))

方法2:基础R原生实现(无需额外包)

利用ifelse函数快速处理:

# 直接给数据框新增列
df$new_col <- ifelse(df$col1 == df$col2 & df$col1 %in% c("T1", "T3"), df$col1, NA)

Python/Pandas实现

方法1:使用np.select(多条件场景首选)

np.select可以清晰定义条件与对应结果:

import pandas as pd
import numpy as np

# 假设数据框名为df
conditions = [
    (df['col1'] == 'T1') & (df['col2'] == 'T1'),
    (df['col1'] == 'T3') & (df['col2'] == 'T3')
]
choices = ['T1', 'T3']

df['new_col'] = np.select(conditions, choices, default=np.nan)

方法2:apply函数实现

通过行遍历处理(适合简单场景,大数据量不推荐):

df['new_col'] = df.apply(
    lambda row: row['col1'] if row['col1'] == row['col2'] and row['col1'] in ['T1', 'T3'] else pd.NA,
    axis=1
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 20:55:20