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

使用dplyr包:将值为TRUE的列后缀合并为新列

解决方案

Base R 实现(无需额外包)

# 筛选出前缀为"category/"的列
target_cols <- grepl("^category/", names(df))
# 提取列名的后缀部分
suffixes <- sub("category/", "", names(df)[target_cols])
# 逐行拼接TRUE对应的后缀
df$category <- apply(df[target_cols], 1, function(row) {
  paste(suffixes[row], collapse = " ")
})

Tidyverse 风格实现(dplyr)

如果你习惯使用tidyverse工具链,这个方法更具可读性:

library(dplyr)
library(stringr)

df <- df %>%
  rowwise() %>%
  mutate(
    # 筛选目标列,提取后缀后拼接
    category = paste(
      str_remove(names(pick(starts_with("category/")))[c_across(starts_with("category/"))],
                 "category/"),
      collapse = " "
    ) %>% trimws()  # 清理首尾可能的空格
  ) %>%
  ungroup()

验证结果

运行上述代码后,数据集会生成符合逻辑的category列:

category/var1 category/var2 category/var3 category
1          TRUE         FALSE          TRUE var1 var3
2         FALSE          TRUE          TRUE var2 var3
3          TRUE         FALSE         FALSE var1

注:你提供的期望结果中第二行category值仅为var2,但根据原数据第二行category/var2和category/var3均为TRUE,正确结果应为var2 var3,上述代码会按逻辑生成正确拼接结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 08:17:12