данных:SAS транспонировать эквивалент в R для списков
set.seed(0)
date <- rep(1:4,3)
N <- length(date)
A <- rnorm(N)
B <- rnorm(N)
C <- rnorm(N)
mydata <- data.frame(date, A, B, C)
date A B C
1 1 1.262954285 -1.1476570 -0.05710677
2 2 -0.326233361 -0.2894616 0.50360797
3 3 1.329799263 -0.2992151 1.08576936
4 4 1.272429321 -0.4115108 -0.69095384
5 1 0.414641434 0.2522234 -1.28459935
6 2 -1.539950042 -0.8919211 0.04672617
7 3 -0.928567035 0.4356833 -0.23570656
8 4 -0.294720447 -1.2375384 -0.54288826
9 1 -0.005767173 -0.2242679 -0.43331032
10 2 2.404653389 0.3773956 -0.64947165
и это то, что я пытаюсь достичь:
date name value
1 A 1.262954285
1 B -1.1476570
1 C -0.05710677
2 A -0.326233361
2 B -0.2894616
2 C 0.50360797
... ... ...
Я считаю, что я должен использовать melt()
, но я получаю что-то немного отличается:
> M <- melt(mydata,id.vars = "date")
> head(M)
date variable value
1 1 A 1.2629543
2 2 A -0.3262334
3 3 A 1.3297993
4 4 A 1.2724293
5 1 A 0.4146414
6 2 A -1.5399500
Могу ли я настроить melt()
каким-то образом, чтобы получить это право?
Похоже, что расплав - это то, что вы хотите. Результат просто сортируется с помощью 'variable', а не' date', поскольку он, похоже, находится в том, чего вы пытаетесь достичь. –
'M [order (M $ date),]' в порядке? Если нет, вам может потребоваться добавить переменную группировки в * mydata * с чем-то вроде rep (1: k, each = 4) ' – Pafnucy
Да, я вижу это. Я думал, что сортировка была зафиксирована id.vars, и я поставил там «дату». Как я могу сортировать его по дате? Извините, если я спрошу очевидное. – Per