[英]Reshaping data of different time lengths in R
我想對數據進行多次重復測量。 首先,我需要將數據框從寬格式重塑為長格式。
這是我的數據框:
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
....
但是我什至不確定擁有這些空單元是否完全有意義?
這是一個主意。 dt_all
是最終輸出。 請注意,此示例未創建Timex
, Timey
和Timez
,但我認為一個稱為Time
列已足夠,單獨的Timex
, 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)
# Create example data frames
dt <- read.table(text = "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",
header = TRUE)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.