gpt4 book ai didi

r - 从长到宽,有两次重复测量

转载 作者:行者123 更新时间:2023-12-01 20:04:48 25 4
gpt4 key购买 nike

我知道这个问题已经在“从长到宽”的标题下被问过很多次了,但我遇到了一种情况,我有两个重复测量的值变量。

          id sex  time      score1    score2
1 subject 1 m Time1 -0.20926263 0.2499310
2 subject 2 m Time1 0.17147511 3.2708905
3 subject 3 m Time1 -0.82619584 0.5993917
4 subject 4 f Time1 -0.95568823 4.4729726
5 subject 5 f Time1 -2.29939525 8.0101254
6 subject 1 m Time2 -0.37914702 3.6387589
7 subject 2 m Time2 0.26759909 4.9027533
8 subject 3 m Time2 0.07727621 2.1848642
9 subject 4 f Time2 -0.08613439 5.8747074
10 subject 5 f Time2 -0.02743044 4.3963938
11 subject 1 m Time3 0.07176053 3.7959496
12 subject 2 m Time3 0.46463917 5.2494579
13 subject 3 m Time3 -0.68764512 2.2639503
14 subject 4 f Time3 -0.56670061 2.3361909
15 subject 5 f Time3 1.70731774 5.8345116

重现数据帧 (DF) 的快速方法。

DF<-data.frame(id=rep(paste("subject", 1:5, sep=" "), 3),              
sex=rep(c("m","m","m","f","f"), 3),
time=c(rep("Time1",5), rep("Time2",5), rep("Time3",5)),
score1=rnorm(15), score2=abs(rnorm(15)*4))

我可以使用基础的reshape函数解决两个测量的重复测量变量的长到宽的问题,但我希望使用plyrreshape2/1 答案,因为这些包对我来说通常更直观。如果您有任何其他解决方案,请继续提供它们,因为学习会很棒。

基础解决方案:

wide <- reshape(DF, v.names=c("score1", "score2"), idvar="id",         
timevar="time", direction="wide")
wide

最佳答案

我认为这可以做到:

library(reshape)
m <- melt(DF)

最简单,但时间和分数的顺序与您的示例相反(如果重要的话)

cast(m,id+sex~...)

或更明确地说:

cast(m,id+sex~variable+time)

您可以将其简化为一行:

recast(DF,id+sex~...)

如果您愿意,可以使用较新的 reshape2 包代替 reshape,将 cast 替换为 dcast ( reshape2 中包含的 recast 版本未给出所需的结果。)

关于r - 从长到宽,有两次重复测量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8192136/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com