Изменить алфавитный порядок имен R ошибка? [дубликат]
На этот вопрос уже есть ответ здесь:
Я пытался использовать функцию reshape для изменения формы данных.кадр от широкого до длинного формата. Я следовал примеру , изменив ширину на длину с несколькими столбцами значений , но правильный ответ, кажется, не работает для меня.
Похоже, что проблема в том, что reshape работает только в том случае, если названия столбцов расположены в алфавитном порядке. Я немного переписал пример, чтобы объяснить проблему. Как вы можете видеть, в переформатированной таблице значения столбцов переключаются. Значения из " 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')
1 ответ:
Проблема заключается в том, как вы определяете свою переменную
varying
: Вы говоритеR
, что все 4 переменные на самом деле являются одной, но это должно быть 2 (avg
и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