wide <- data.frame(id = rep(1:8),
x1990 = rnorm(4), x2000 = rnorm(4),
y1990 = runif(4), y2000 = rnorm(4),
age=runif(4))
wide
> wide
id x1990 x2000 y1990 y2000 age
1 1 -0.3391266 0.2116209 0.9651395 0.5107261 0.6414690
2 2 0.6105478 -0.8521457 0.2798804 0.7340399 0.4104719
3 3 -0.8593098 1.2534132 0.5698498 -0.7069206 0.7748600
4 4 1.2901323 -0.5807881 0.3347142 0.2247963 0.9009608
5 5 -0.3391266 0.2116209 0.9651395 0.5107261 0.6414690
6 6 0.6105478 -0.8521457 0.2798804 0.7340399 0.4104719
7 7 -0.8593098 1.2534132 0.5698498 -0.7069206 0.7748600
8 8 1.2901323 -0.5807881 0.3347142 0.2247963 0.9009608
如何变成long格式数据
id year x y age
1 1990
1 2000
2 1990
2 2000
[size=13.63636302948px]
[size=13.63636302948px]
[size=13.63636302948px]
谢谢
解决方法
- rm(list=ls())
- wide <- data.frame(id = rep(1:8),
- x1990 = round(rnorm(4),2),
- x2000 = round(rnorm(4),2),
- y1990 = round(runif(4),2),
- y2000 = round(runif(4),2),
- age=seq(from = 35, to = 70, by = 5))
- wide
- long <- reshape(wide, idvar = "id",
- varying = c("x1990", "x2000", "y1990", "y2000"),
- timevar = "year",
- times = c(1990, 2000),
- v.names = c("x", "y"),
- direction = "long")
- long
不过显然R这个的不如stata的reshape方便


雷达卡





京公网安备 11010802022788号







