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

基于T_out列值筛选列生成T_in列的R语言数据处理需求

R语言按条件行级选取列值生成新列

原始数据

首先定义输入数据框:

df1 <- data.frame(ID = c('a', 'b', 'c', 'c1', 'd', 'e', 'f', 'g', 'h', 'h1'),
                  T_10_12 = c(11, 15, 14, 14, 13, 16, 15, 12, 11, 12),
                  T_12_14 = c(12, 16, 16, 16, 14, 17, 16.5, 13, 12, 12),
                  T_14_16 = c(13, 18, 17.5, 16.5, 15, 18, 17.2, 13, 13, 14),
                  T_out = c(10.5, 12.3, 14.5, 15.1, 15, 13, 12, 13, 13, 14))

需求

根据T_out的值,从T_10_12、T_12_14、T_14_16三列中选取对应值生成新列T_in,最终保留ID、T_in、T_out三列,输出结果匹配给定示例。

从示例反推完整取值规则:

  • 当T_out ≤12时,取T_10_12的值
  • 当12 < T_out <14时,取T_12_14的值
  • 当T_out ≥14时,取T_14_16的值

实现方法

方法1:使用dplyr包(推荐)

借助case_when函数实现多条件判断:

library(dplyr)

df_result <- df1 %>%
  mutate(T_in = case_when(
    T_out <= 12 ~ T_10_12,
    T_out > 12 & T_out < 14 ~ T_12_14,
    T_out >= 14 ~ T_14_16
  )) %>%
  select(ID, T_in, T_out)

# 输出结果
print(df_result)

方法2:基础R实现

通过条件索引直接赋值:

# 复制原始数据并初始化T_in列
df_result <- df1
df_result$T_in <- NA

# 按条件赋值
df_result$T_in[df_result$T_out <= 12] <- df_result$T_10_12[df_result$T_out <= 12]
df_result$T_in[df_result$T_out > 12 & df_result$T_out < 14] <- df_result$T_12_14[df_result$T_out > 12 & df_result$T_out < 14]
df_result$T_in[df_result$T_out >= 14] <- df_result$T_14_16[df_result$T_out >= 14]

# 保留目标列
df_result <- df_result[, c("ID", "T_in", "T_out")]

# 输出结果
print(df_result)

运行结果

两种方法都会得到以下输出:

ID T_in T_out
1   a 11.0  10.5
2   b 16.0  12.3
3   c 17.5  14.5
4  c1 16.5  15.1
5   d 15.0  15.0
6   e 17.0  13.0
7   f 15.0  12.0
8   g 16.5  13.0
9   h 13.0  13.0
10 h1 14.0  14.0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 18:55:07