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

R语言含NA值的列合并:生成合并值列及来源标识新列

R实现多列合并并标记来源列的方法

以下两种方案均适配你给出的示例数据结构(每行仅一个Temp类列存在非NA值):

步骤1:构造示例数据(可替换为你的实际数据)

df <- data.frame(
  Sample = c("A", "B", "C"),
  Temp1 = c(121.3, NA, NA),
  Temp2 = c(NA, 35.1, NA),
  Temp3 = c(NA, NA, 39.9)
)

方案1:tidyverse简洁实现(推荐)

依赖dplyr和tidyr包,语法清晰易维护:

library(tidyverse)

df_result <- df %>%
  pivot_longer(
    cols = starts_with("Temp"),
    names_to = "Reading",
    values_to = "Temp",
    values_drop_na = TRUE
  ) %>%
  # 调整Reading格式为你需要的"Temp 1"样式,不需要可删除该行
  mutate(Reading = str_replace(Reading, "Temp", "Temp "))

方案2:基础R实现(无需加载第三方包)

适合轻量运行场景,无需安装额外依赖:

# 定位每行非NA的Temp列索引
temp_cols <- c("Temp1", "Temp2", "Temp3")
col_pos <- max.col(!is.na(df[temp_cols]), ties.method = "first")

# 生成结果表
df_result <- data.frame(
  Sample = df$Sample,
  Temp = df[temp_cols][cbind(1:nrow(df), col_pos)],
  Reading = paste("Temp", sub("Temp", "", temp_cols[col_pos]))
)

运行后输出结果:

Sample  Temp Reading
1      A 121.3  Temp 1
2      B  35.1  Temp 2
3      C  39.9  Temp 3

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 01:54:03