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

如何在R中基于行内列值生成条件合并的新列trt?

在R中为DataFrame添加组合列的解决方案

首先构造符合需求的示例数据(空白处用NA表示):

df <- data.frame(
  F1 = c(1, 1, 1),
  F2 = c(1, NA, NA),
  F3 = c(NA, 1, NA),
  F4 = c(NA, NA, 1),
  stringsAsFactors = FALSE
)

方法1:基础R原生实现

直接按行遍历,提取每行值为1的列名并拼接:

df$trt <- apply(df, 1, function(row) {
  paste(names(row)[row == 1], collapse = "_")
})

方法2:Tidyverse工具链实现(dplyr风格)

如果你习惯使用tidyverse生态,有两种简洁写法:

写法A:用rowwise()逐行处理

library(dplyr)

df <- df %>%
  rowwise() %>%
  mutate(trt = paste(names(.)[c_across(everything()) == 1], collapse = "_")) %>%
  ungroup()

写法B:用pmap_chr()映射处理

library(dplyr)
library(purrr)

df <- df %>%
  mutate(trt = pmap_chr(., ~ paste(names(c(...))[c(...) == 1], collapse = "_")))

适配说明

如果你的数据中空白对应的是0而非NA,只需要把代码里的row == 1替换为row != 0即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 01:22:09