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

在R中如何根据变量名前缀添加分组列Group_Var

问题描述

现有如下mydf数据框(宽格式):

library(dplyr)

glimpse(mydf)

Rows: 3,286
Columns: 741
$ acc_180d_gdd_diff_GO_biz              <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
$ acc_180d_gdd_diff_MG_biz              <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
$ acc_180d_gdd_diff_MS_biz              <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
$ acc_180d_gdd_diff_MT_biz              <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
$ acc_180d_gdd_diff_PR_biz              <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
$ acc_180d_gdd_diff_RS_biz              <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
$ acc_180d_gdd_diff_US_IA_biz           <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
$ acc_180d_gdd_diff_US_IL_biz           <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
$ gdd_90d_precip_GO_biz                 <dbl> 22.53283, 29.86229, 31.01503, 38…
$ gdd_90d_precip_MG_biz                 <dbl> 10.96422, 11.70888, 14.23489, 19…
$ gdd_90d_precip_MS_biz                 <dbl> 6.976152, 27.515620, 27.758262, …
$ gdd_90d_precip_MT_biz                 <dbl> 26.55052, 26.55052, 64.79208, 67…
...

需要新增一列Group_Var,根据变量名对数据归类(比如变量名以"acc"开头的标记为"climatic"),如何用mutate函数实现?

解决方案

你的数据是宽格式(变量名作为列名),直接用mutate无法基于列名给每行标记分组,得先转成长格式让变量名成为单独列,再进行分组标记:

  1. 加载所需工具包:
library(dplyr)
library(tidyr)
library(stringr)
  1. 转长格式并新增分组列:
mydf_long <- mydf %>%
  pivot_longer(cols = everything(), 
               names_to = "var_name", 
               values_to = "value") %>% 
  mutate(Group_Var = case_when(
    str_starts(var_name, "acc") ~ "climatic",
    str_starts(var_name, "gdd") ~ "climatic",
    str_starts(var_name, "price") ~ "price",
    TRUE ~ "other"
  ))

关键说明:

  • pivot_longer将宽格式转成长格式,把原列名存入var_name列,原单元格值存入value列,这样才能对变量名做匹配判断。
  • str_starts用于快速判断字符串是否以指定前缀开头,语法比基础R的grepl更简洁。
  • case_when支持批量设置多组匹配规则,可根据需求扩展更多分组条件。

如果后续需要转回宽格式,可使用:

mydf_wide <- mydf_long %>%
  pivot_wider(names_from = var_name, 
              values_from = value)

内容的提问来源于stack exchange,提问作者Rodrigo H. Ozon

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 19:36:16