R语言中data.frame数据框格式转换方法咨询
你需要执行的是宽格式数据转长格式数据的重塑操作,不同R生态下的实现方法如下:
方法1:使用tidyverse生态pivot_longer函数(易读性最高)
首先加载tidyr包,执行如下代码:
library(tidyr) # 请将下方df_old替换为你自己的原始数据框名称 df_new <- df_old %>% pivot_longer( cols = -ID, # 除ID列外所有列都展开,若ID列名不同请同步修改 names_to = "分类维度", # 可自定义生成的分类列的列名 values_to = "数值" # 可自定义生成的数值列的列名 )
方法2:基础R原生reshape函数(无需安装第三方包)
# 请将下方df_old替换为你自己的原始数据框名称 df_new <- reshape( df_old, direction = "long", varying = list(colnames(df_old)[-1]), v.names = "数值", timevar = "分类维度", times = colnames(df_old)[-1], idvar = "ID" ) # 可选操作:重置行名 rownames(df_new) <- NULL
方法3:data.table包melt函数(适配大数据量场景,运算速度更快)
library(data.table) # 请将下方df_old替换为你自己的原始数据框名称 setDT(df_old) df_new <- melt( df_old, id.vars = "ID", variable.name = "分类维度", value.name = "数值" )
你可以根据自己的原始数据字段、使用习惯选择对应方法,修改代码中的自定义列名即可适配你的实际需求。
内容的提问来源于stack exchange,提问作者Hugo
相关产品推荐
相关产品推荐

