首页 > 解决方案 > 数据整理——将 n 步列转置为 n 行

问题描述

我需要以下帮助。任何 Python、R 或 VBA 代码都会有很大帮助

输入

Name    Age Grade   Name    Age Grade   Name    Age Grade
Esther  12  A   Carol   15  A   Eugene  15  C
Isaac   17  B   Kelvin  21  C   Claire  17  B

期望的输出

Name    Age Grade                       
Esther  12  A                       
Carol   15  A                       
Eugene  15  C                       
Isaac   17  B                       
Kelvin  21  C                       
Claire  17  B

标签: rpython-3.xvba

解决方案


R中,一种选择是split通过列名和unlist

data.frame(lapply(split.default(df1, names(df1)), unlist))

或者另一个选项melt来自data.table

library(data.table)
melt(setDT(df1), measure = patterns("^Name", "^Age", "^Grade"), 
       value.name = c("Name", "Age", "Grade"))[, variable := NULL][]
#      Name Age Grade
#1: Esther  12     A
#2:  Isaac  17     B
#3:  Carol  15     A
#4: Kelvin  21     C
#5: Eugene  15     C
#6: Claire  17     B

推荐阅读