将数据集从宽格式重塑为按变量后缀分组的长格式
Reshape data set from wide to long format grouped by variable suffix
与此相似但不同post:Reshaping data.frame from wide to long format
我有一个包含唯一 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
Base/generic 方案优先。
这里的主要问题是,如何在重塑中为 "varying" 参数建立自动切割点,以及如何从变量后缀提供 "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")
与此相似但不同post:Reshaping data.frame from wide to long format
我有一个包含唯一 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
Base/generic 方案优先。
这里的主要问题是,如何在重塑中为 "varying" 参数建立自动切割点,以及如何从变量后缀提供 "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")