重塑名称 R 错误的字母顺序?

Reshape alphabetical order of names R bug?

我试图使用重塑函数将 data.frame 从宽格式重塑为长格式。我正在按照一个示例 Reshaping wide to long with multiple values columns,但正确答案似乎不适合我。

看来问题是,如果列的名称按字母顺序排列,则重塑只能起作用。我稍微重写了这个例子,来解释这个问题。如您所见,在重新格式化的 table 中,列的值被切换。 "avg" 中的值在 "asd" 中,反之亦然。

这是一个错误,还是我想错了?

你好,西尔克

    dw <- read.table(header=T, text='
 sbj f1.avg f1.asd f2.avg f2.asd  blabla
                 A   10    6     50     10      bA
                 B   12    5     70     11      bB
                 C   20    7     20     8       bC
                 D   22    8     22     9       bD
                 ')


reshape(dw, direction='long', 
        varying=c('f1.avg', 'f1.asd', 'f2.avg', 'f2.asd'), 
        timevar='var',
        times=c('f1', 'f2'),
        v.names=c('avg', 'asd'),
        idvar='sbj')

问题是你如何定义你的 varying 变量:你告诉 R 所有 4 个变量实际上是一个,但它必须是 2([​​=13=]和 asd),正如您在 v.names.
中所说的 您必须将 varying 定义为 2:

的列表
reshape(dw, 
        varying=list(c("f1.avg", "f2.avg"), c("f1.asd", "f2.asd")),
        timevar='var', direction="long", idvar="sbj", v.names=c("avg", "asd"), times=c("f1", "f2"))
#     sbj blabla var avg asd
#A.f1   A     bA  f1  10   6
#B.f1   B     bB  f1  12   5
#C.f1   C     bC  f1  20   7
#D.f1   D     bD  f1  22   8
#A.f2   A     bA  f2  50  10
#B.f2   B     bB  f2  70  11
#C.f2   C     bC  f2  20   8
#D.f2   D     bD  f2  22   9