【发布时间】:2017-10-06 14:19:41
【问题描述】:
这是我的数据框:
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")
当我尝试在新的重塑数据帧上使用相同的重塑方法来融化下一个变量时,它不再起作用了。 所以我尝试运行这个:
reshaped.df <- reshape(reshaped.df,
idvar="ID",
varying= list( c("y.1", "y.2", "y.3")),
timevar="Timey",
v.names= "Y",
times=c("P1", "P2", "P3"),
direction="long")
我收到以下错误和警告消息:
Error in `row.names<-.data.frame`(`*tmp*`, value = paste(d[, idvar], times[1L], :
duplicate 'row.names' are not allowed
In addition: Warning message:
non-unique values when setting 'row.names': ‘144.Part1’, ‘167.Part1’, ‘247.Part1’, ‘317.Part1’, ‘344.Part1’, ‘352.Part1’, ‘382.Part1’, ... <truncated>
还有其他方法可以有效地做到这一点吗?
【问题讨论】:
-
您没有尝试类似
melt的具体原因是什么?即:melt(df, id.vars = c("ID","Group")) -
嗨,迈克,如果我尝试简单地
melt,我所有的 x、y 和 z 值都在一个巨大的列中。我至少想为 x 保留一列,为 y 保留一列,为 z 保留一列...您如何使用简单的melt函数指定这一点? -
看我的回答,我会使用 reshape