如何在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
相关产品推荐
相关产品推荐

