如何在R中基于其他列的条件创建新列'type'?
基于多条件创建新列'type'的实现方案
下面分两种常用数据处理工具给出实现代码,严格遵循你指定的条件优先级:
R语言(dplyr)实现
使用dplyr包的case_when()函数按顺序匹配条件,确保优先级正确:
library(dplyr) df <- df %>% mutate(type = case_when( !is.na(received) ~ "group_1", # 优先判断received非空 is.na(received) & closed == "yes" ~ "group_2", # 其次是received空且closed=yes opened == "AC" ~ "group_3", # 最后判断opened=AC TRUE ~ NA_character_ # 不满足以上条件时返回NA,可按需修改 ))
Python(Pandas)实现
用numpy.select()高效处理多条件赋值,适配中等规模数据集:
import pandas as pd import numpy as np # 定义条件列表和对应结果值 conditions = [ df['received'].notna(), df['received'].isna() & (df['closed'] == 'yes'), df['opened'] == 'AC' ] values = ['group_1', 'group_2', 'group_3'] # 生成新列 df['type'] = np.select(conditions, values, default=np.nan)
注意事项
- 条件顺序必须严格遵循你给出的优先级,工具会按顺序匹配第一个满足的条件
- 若存在不满足任何条件的行,上述代码会返回
NA(R)或NaN(Python),可根据需求修改默认值
内容的提问来源于stack exchange,提问作者user17753
相关产品推荐
相关产品推荐

