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

如何在R中将多列Color:*格式的数据框转换为单列Color列

解决方法

先构造一个和你需求匹配的示例数据(包含其他变量列):

library(tidyverse)

# 模拟你的数据结构
df <- tibble(
  IDENTITY = c("A", "B", "C", "D"),
  Age = c(25, 30, 35, 40),
  `Color:Blue` = c("Yes", NA, NA, "Yes"),
  `Color:Red` = c(NA, "Yes", NA, NA),
  `Color:Green` = c(NA, NA, "Yes", NA),
  City = c("NY", "LA", "Chicago", "Houston")
)

用tidyverse工具集处理的代码如下:

processed_df <- df %>%
  # 把所有以"Color:"开头的列转成长格式
  pivot_longer(
    cols = starts_with("Color:"),
    names_to = "Color",
    values_to = "Status"
  ) %>%
  # 只保留值为"Yes"的行(因为每行仅一个Yes)
  filter(Status == "Yes") %>%
  # 提取冒号后的颜色值
  mutate(Color = str_remove(Color, "Color:")) %>%
  # 移除临时的Status列
  select(-Status)

代码说明

  • pivot_longer:把分散的Color:XXX列合并成两列,分别存原列名和对应的值
  • filter:筛选出标记为"Yes"的记录,保证每个IDENTITY只留一行有效数据
  • str_remove:从原列名里去掉前缀"Color:",得到纯颜色值
  • select:清理掉不需要的临时列

处理后的结果会保留所有原变量列,同时新增Color列存储对应的颜色值。如果你的实际数据里还有其他类似命名规则的列,可以把starts_with("Color:")换成matches("Color:")来更精准匹配列名。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 08:01:03