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

如何在R中对8列数据框做列变换并转换为3列长表

宽表转长表实现方案

Pandas(Python)实现

假设你已经筛选出包含business_id和7个星期营业时长列的宽数据框(列名如Monday、Tuesday...Sunday),用melt函数一步转成目标长表:

import pandas as pd

# df_wide 是你已处理好的宽表
df_long = df_wide.melt(
    id_vars='business_id',
    var_name='wday',
    value_name='duration'
)

如果你的星期列名是缩写格式(比如mon_duration),可以额外处理wday列统一格式:

# 示例:替换缩写为完整星期名
df_long['wday'] = df_long['wday'].map({
    'mon_duration': 'Monday',
    'tue_duration': 'Tuesday',
    'wed_duration': 'Wednesday',
    'thu_duration': 'Thursday',
    'fri_duration': 'Friday',
    'sat_duration': 'Saturday',
    'sun_duration': 'Sunday'
})

R 实现

用tidyr包的pivot_longer函数完成转换:

library(tidyr)

# df_wide 是你已处理好的宽表
df_long <- df_wide %>%
  pivot_longer(
    cols = -business_id,
    names_to = "wday",
    values_to = "duration"
  )

同样,若列名是缩写,可通过mutate调整:

df_long <- df_long %>%
  mutate(wday = recode(wday,
    "mon_duration" = "Monday",
    "tue_duration" = "Tuesday",
    "wed_duration" = "Wednesday",
    "thu_duration" = "Thursday",
    "fri_duration" = "Friday",
    "sat_duration" = "Saturday",
    "sun_duration" = "Sunday"
  ))

内容的提问来源于stack exchange,提问作者A.D

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 05:30:47