我想对我的数据执行多次重复测量。我首先需要将数据帧从宽格式重新整形为长格式。
这是我的数据框:
ID Group x1 x2 x3 y1 y2 y3 z1 z2
144 1 566 613 597 563 549 562 599 469
167 2 697 638 756 682 695 693 718 439.5
247 4 643 698 730 669 656 669 698 514.5
317 4 633 646 641 520 543 586 559 405.5
344 3 651 678 708 589 608 615 667 514
352 2 578 702 671 536 594 579 591 467.5
382 1 678 690 693 555 565 534 521 457.5
447 3 668 672 718 663 689 751 784 506.5
464 2 760 704 763 514 554 520 564 486
628 1 762 789 783 618 610 645 625 536
正如您可能注意到的,我在三个时间点测量变量x和y,在两个点测量变量z。考虑到我有不同的时间长度,我想知道尝试将数据重新整形为长格式是否有意义。
我无法这样做。首先,这样做是否有意义?或者我应该制作两个数据帧?第二,如果它确实有意义,怎么样?
编辑:我希望有类似的东西:ID Group Timex Timey Timez x y z
144 1 1 1 1 566 563 599
144 1 2 2 2 613 549 469
144 1 3 3 597 562
167 2 1 1 1 697 682 718
167 2 2 2 2 638 695 439.5
167 2 3 3 756 693
....
但是我甚至不确定这些是否有意义,有这些空单元格?
答案 0 :(得分:0)
这是一个想法。 dt_all
是最终输出。请注意,此示例不会创建Timex
,Timey
和Timez
,但我认为一个名为Time
的列已足够且单个Timex
,{ {1}},而Timey
是多余的。
Timez
# Load packages
library(dplyr)
library(tidyr)
# Process the data
dt_all <- dt %>%
gather(Var, Value, -ID, -Group) %>%
mutate(Time = sub("[a-z]", "", Var), Type = sub("[0-9]", "", Var)) %>%
select(-Var) %>%
spread(Type, Value)