【问题标题】:Pivot table from column to row in excel or R [duplicate]在excel或R中从列到行的数据透视表[重复]
【发布时间】:2013-03-31 07:44:58
【问题描述】:

我有一个像这样的表头

Id x.1960 x.1970 x.1980 x.1990 x.2000 y.1960 y.1970 y.1980 y.1990 y.2000

我想把这张表转成

Id time x y

在 Excel 或 R 中执行此操作的最佳方法是什么?

【问题讨论】:

标签: r excel pivot reshape


【解决方案1】:

使用基本 R reshape:

先获取一些数据

test <- read.table(text="Id x.1960 x.1970 x.1980 x.1990 x.2000 y.1960 y.1970 y.1980 y.1990 y.2000
a 1 2 3 4 5 6 7 8 9 10
b 10 20 30 40 50 60 70 80 90 100",header=TRUE)

然后重塑:

reshape(
  test,
  idvar="Id",
  varying=list(2:6,7:11),
  direction="long",
  v.names=c("x","y"),
  times=seq(1960,2000,10)
)

或者让reshape根据.分隔符自动猜测名称:

reshape(
  test,
  idvar="Id",
  varying=-1,
  direction="long",
  sep="."
)

导致:

       Id time  x   y
a.1960  a 1960  1   6
b.1960  b 1960 10  60
a.1970  a 1970  2   7
b.1970  b 1970 20  70
a.1980  a 1980  3   8
b.1980  b 1980 30  80
a.1990  a 1990  4   9
b.1990  b 1990 40  90
a.2000  a 2000  5  10
b.2000  b 2000 50 100

【讨论】:

  • 感谢您的帮助,它既快速又实用!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-12-06
  • 1970-01-01
  • 2019-06-20
  • 1970-01-01
  • 1970-01-01
  • 2021-09-05
  • 1970-01-01
相关资源
最近更新 更多