我试图使用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')
答案 0 :(得分:3)
问题在于您如何定义varying
变量:您告诉R
所有4个变量实际上都是1,但它必须是2({{1}正如你在avg
中所说的那样。}和asd
)
您必须将v.names
定义为2的列表:
varying