重塑名称R bug的字母顺序?

时间:2017-06-29 08:41:24

标签: r reshape reshape2 melt

我试图使用reshape函数将data.frame从宽格式转换为长格式。我正在关注一个例子Reshaping wide to long with multiple values columns,但正确的答案似乎不适合我。

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

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

问候,Silke

    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')

1 个答案:

答案 0 :(得分:3)

问题在于您如何定义varying变量:您告诉R所有4个变量实际上都是1,但它必须是2({{1}正如你在avg中所说的那样。}和asd) 您必须将v.names定义为2的列表:

varying