如何在R中多次成功地使用整形()函数?
这是我的数据帧:如何在R中多次成功地使用整形()函数?,r,reshape,anova,R,Reshape,Anova,这是我的数据帧: ID Group x1 x2 x3 y1 y2 y3 z1 z2 z3 144 1 566 613 597 563 549 562 599 82 469 167 2 697 638 756 682 695 693 718 82 439.5 247 4 643 698 730 669 656 669 698 82 514.5 317 4 633 646 641 520 543 586 559 82 40
ID Group x1 x2 x3 y1 y2 y3 z1 z2 z3
144 1 566 613 597 563 549 562 599 82 469
167 2 697 638 756 682 695 693 718 82 439.5
247 4 643 698 730 669 656 669 698 82 514.5
317 4 633 646 641 520 543 586 559 82 405.5
344 3 651 678 708 589 608 615 667 82 514
352 2 578 702 671 536 594 579 591 82 467.5
382 1 678 690 693 555 565 534 521 82 457.5
447 3 668 672 718 663 689 751 784 82 506.5
464 2 760 704 763 514 554 520 564 82 486
628 1 762 789 783 618 610 645 625 82 536
我有几个重复的措施,在广泛的格式,我想重塑成长格式。我不知道如何一次重塑所有三个(x,y,z)重新处理的变量,所以我选择一个接一个地尝试。所以我可以成功地重塑变量x:
reshaped.df <- reshape(df,
idvar="ID",
varying= c("x.1", "x.2", "x.3"),
timevar="Timex",
v.names= "X",
times=c("Part1", "Part2", "Part3"),
direction="long")
reformed.df您可以尝试data.table::melt
,它可以同时熔化三个测量组:
library(data.table)
df <- fread('ID Group x1 x2 x3 y1 y2 y3 z1 z2 z3
144 1 566 613 597 563 549 562 599 82 469
167 2 697 638 756 682 695 693 718 82 439.5
247 4 643 698 730 669 656 669 698 82 514.5
317 4 633 646 641 520 543 586 559 82 405.5
344 3 651 678 708 589 608 615 667 82 514
352 2 578 702 671 536 594 579 591 82 467.5
382 1 678 690 693 555 565 534 521 82 457.5
447 3 668 672 718 663 689 751 784 82 506.5
464 2 760 704 763 514 554 520 564 82 486
628 1 762 789 783 618 610 645 625 82 536')
melt(df, id = 1:2, measure.vars = patterns('^x', '^y', '^z'),
variable.name = 'repeat', value.name = c('x', 'y', 'z'))
# ID Group repeat x y z
# 1: 144 1 1 566 563 599.0
# 2: 167 2 1 697 682 718.0
# 3: 247 4 1 643 669 698.0
# 4: 317 4 1 633 520 559.0
# 5: 344 3 1 651 589 667.0
# 6: 352 2 1 578 536 591.0
# 7: 382 1 1 678 555 521.0
# 8: 447 3 1 668 663 784.0
# 9: 464 2 1 760 514 564.0
# 10: 628 1 1 762 618 625.0
# 11: 144 1 2 613 549 82.0
# 12: 167 2 2 638 695 82.0
# ...
库(data.table)
df我会使用重塑
做类似的事情:
vars <- names(df)[grepl("(x|y|z)",names(df))]
res <- reshape(df, varying=vars, v.names = c("x","y","z"), direction = "long")
head(res)
# ID Group time x y z id
#1.1 144 1 1 566 613 597 1
#2.1 167 2 1 697 638 756 2
#3.1 247 4 1 643 698 730 3
#4.1 317 4 1 633 646 641 4
#5.1 344 3 1 651 678 708 5
#6.1 352 2 1 578 702 671 6
vars您没有尝试类似于melt
的东西有什么具体原因吗?例如:melt(df,id.vars=c(“id”,“Group”))
Hi Mike,如果我试图简单地melt
,我的所有x、y和z值都在一个巨大的列中。我想至少为x保留一列,为y保留一列,为z保留一列。。。您将如何使用简单的melt
函数来指定这一点?请看我的答案,我将在那里使用ReformateHi!谢谢你的建议。但是,我不太理解measure.vars=patterns(“^x”、“^y”、“^z”)
部分。我的实际变量名比x、y和z复杂一点。它们更像:MediaNRTPostrialsSpart1、MediaNRTPostrialsSpart2和MediaNRTPostrialsSpart3。我尝试使用以下方法:measure.vars=patterns(“^MedianRTPosTrialsPart”)
但不起作用:错误:在数据中找不到度量变量:^MedianRTPosTrialsPart
。还有什么建议吗?我不知道你的数据是什么样子的。但是,您可以检查?data.table::melt
,查看如何使用模式指定度量.var
,或者查看colname列表和下面的示例。如果你仍然有问题,你可以通过编辑原始帖子向我展示你真实数据的简短样本,让我帮助你,或者你可以问一个新问题。
library(data.table)
df <- fread('ID Group x1 x2 x3 y1 y2 y3 z1 z2 z3
144 1 566 613 597 563 549 562 599 82 469
167 2 697 638 756 682 695 693 718 82 439.5
247 4 643 698 730 669 656 669 698 82 514.5
317 4 633 646 641 520 543 586 559 82 405.5
344 3 651 678 708 589 608 615 667 82 514
352 2 578 702 671 536 594 579 591 82 467.5
382 1 678 690 693 555 565 534 521 82 457.5
447 3 668 672 718 663 689 751 784 82 506.5
464 2 760 704 763 514 554 520 564 82 486
628 1 762 789 783 618 610 645 625 82 536')
melt(df, id = 1:2, measure.vars = patterns('^x', '^y', '^z'),
variable.name = 'repeat', value.name = c('x', 'y', 'z'))
# ID Group repeat x y z
# 1: 144 1 1 566 563 599.0
# 2: 167 2 1 697 682 718.0
# 3: 247 4 1 643 669 698.0
# 4: 317 4 1 633 520 559.0
# 5: 344 3 1 651 589 667.0
# 6: 352 2 1 578 536 591.0
# 7: 382 1 1 678 555 521.0
# 8: 447 3 1 668 663 784.0
# 9: 464 2 1 760 514 564.0
# 10: 628 1 1 762 618 625.0
# 11: 144 1 2 613 549 82.0
# 12: 167 2 2 638 695 82.0
# ...
vars <- names(df)[grepl("(x|y|z)",names(df))]
res <- reshape(df, varying=vars, v.names = c("x","y","z"), direction = "long")
head(res)
# ID Group time x y z id
#1.1 144 1 1 566 613 597 1
#2.1 167 2 1 697 638 756 2
#3.1 247 4 1 643 698 730 3
#4.1 317 4 1 633 646 641 4
#5.1 344 3 1 651 678 708 5
#6.1 352 2 1 578 702 671 6