R语言如何将含多x列的宽格式dataframe转换为合并单列的长格式
R语言宽表转长表实现方案
方法1:使用tidyr包(tidyverse生态推荐方案)
首先加载所需包:
library(tidyr)
转换代码如下:
long_df <- dataframe %>% # 移除不需要的z列 select(-z) %>% pivot_longer( # 指定需要合并的x1/x2/x3列,若所有x前缀列都要合并可简化为 cols = starts_with("x") cols = c(x1, x2, x3), # 不保留原列名对应的分类列 names_to = NULL, # 合并后的值列命名为x values_to = "x" ) %>% # 按y列排序,匹配示例输出顺序 arrange(y)
运行后打印结果即可得到需求格式的长表:
print(long_df)
方法2:使用reshape2包melt函数
如果习惯使用reshape2生态,可以用如下实现:
library(reshape2) long_df <- melt( dataframe, # 指定固定保留的y列 id.vars = "y", # 指定需要合并的列 measure.vars = c("x1", "x2", "x3"), value.name = "x" ) # 移除原列名对应的variable列,按y排序 long_df <- long_df[order(long_df$y), c("y", "x")]
内容的提问来源于stack exchange,提问作者aleksandar_m
相关产品推荐
相关产品推荐

