如何用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
相关产品推荐
相关产品推荐

