如何在R语言中创建IF-THEN逻辑函数以生成新列?
基于条件逻辑生成新列的实现方案
Python(Pandas)实现
示例数据加载
先将示例数据转换为DataFrame:
import pandas as pd import numpy as np data = { 'day1': [20, 25, 26, 27, 28, 60, 120], 'weight1': [np.nan, 190, 167, 189, 200, 300, 127] } df = pd.DataFrame(data)
生成新列逻辑
两种简洁实现方式:
# 方法1:使用numpy.where直接映射条件 df['weightAdj'] = np.where((df['day1'] > 20) & (df['day1'] < 200), df['weight1'], np.nan) # 方法2:布尔索引赋值 df['weightAdj'] = df['weight1'] df.loc[~((df['day1'] > 20) & (df['day1'] < 200)), 'weightAdj'] = np.nan
输出结果
执行后得到符合需求的数据集:
day1 weight1 weightAdj 0 20 NaN NaN 1 25 190.0 190.0 2 26 167.0 167.0 3 27 189.0 189.0 4 28 200.0 NaN 5 60 300.0 NaN 6 120 127.0 127.0
R语言实现
示例数据加载
data <- data.frame( day1 = c(20, 25, 26, 27, 28, 60, 120), weight1 = c(NA, 190, 167, 189, 200, 300, 127) )
生成新列逻辑
用ifelse函数直接实现条件判断:
data$weightAdj <- ifelse(data$day1 > 20 & data$day1 < 200, data$weight1, NA)
输出结果
处理后的数据框:
day1 weight1 weightAdj 1 20 NA NA 2 25 190 190 3 26 167 167 4 27 189 189 5 28 200 NA 6 60 300 NA 7 120 127 127
内容的提问来源于stack exchange,提问作者BD'auria
相关产品推荐
相关产品推荐

