R语言如何将data.frame列转为行 实现宽表转指定长表格式
R 宽表转长表实现方案
R中已经有成熟的函数可以直接实现你说的指定列转成行的宽转长需求,以下是两种常用方案:
方案1:tidyr包的pivot_longer(主流推荐)
这是当前tidyverse生态中最常用的宽转长函数,语法清晰易维护:
# 未安装先执行:install.packages("tidyr") library(tidyr) df_long <- pivot_longer( df, cols = -Date, # 除了Date列外,其余所有列都参与转换,也可以写成c(A,B) names_to = "Site", # 原列名存储到新的Site字段 values_to = "Value" # 原单元格数值存储到新的Value字段 )
运行后输出的df_long和你要求的目标格式完全一致。
方案2:基础R内置reshape函数(无需安装额外包)
适合不想依赖第三方包的场景:
df_long <- reshape( df, idvar = "Date", # 固定保留的标识列 varying = c("A", "B"), # 需要转置的列 v.names = "Value", # 数值对应的新列名 timevar = "Site", # 原列名对应的新列名 direction = "long" # 指定转换方向为宽转长 ) # 可选:重置行号匹配示例格式 rownames(df_long) <- NULL
内容的提问来源于stack exchange,提问作者francisco corvalan
相关产品推荐
相关产品推荐

