繁体   English   中英

按变量后缀分组将数据集从宽格式转换为长格式

[英]Reshape data set from wide to long format grouped by variable suffix

与本文类似但有所不同:将data.frame从宽格式重塑为长格式

我有一个具有唯一ID变量的宽数据集,而所有其他变量的后缀均为4位数字:

ID MI1995 FRAC1995 MI1996 FRAC1996
1     2         3       2       4
7     3         10      12      1
10    1         2       1       1

我想要一个由4位数字后缀分组的长数据集。 因此,每个ID每年应有1行,每行4位数字的后缀:

ID YEAR   MI  FRAC
1   1995   2   3
1   1996   2   4
7   1995   3   10
7   1996   12  1
10  1995   1   2
10  1996   1   1

基础/通用解决方案是首选。

这里的主要问题是,如何在重塑中为“可变”参数建立自动切入点,以及如何从变量后缀中提供“ timevar”参数?

使用reshape我们可以使用sep=""设置切点。

reshape(d, idvar="ID", varying=2:5, timevar="YEAR", sep="", direction="long")
#         ID YEAR MI FRAC
# 1.1995   1 1995  2    3
# 7.1995   7 1995  3   10
# 10.1995 10 1995  1    2
# 1.1996   1 1996  2    4
# 7.1996   7 1996 12    1
# 10.1996 10 1996  1    1

数据

d <- structure(list(ID = c(1L, 7L, 10L), MI_1995 = c(2L, 3L, 1L),
                    FRAC_1995 = c(3L, 10L, 2L), MI_1996 = c(2L, 12L, 1L),
                    FRAC_1996 = c(4L, 1L, 1L)), row.names = c(NA, -3L),
               class = "data.frame")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM