重塑名称 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
我试图使用重塑函数将 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