R 长到宽,两次重复测量
我知道在“从长到宽”的标题下,这已经被问了很多次了,但是我遇到了一个情况,我有两个重复测量的值变量R 长到宽,两次重复测量,r,R,我知道在“从长到宽”的标题下,这已经被问了很多次了,但是我遇到了一个情况,我有两个重复测量的值变量 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 Tim
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)的方法
我认为这样可以做到:
library(reshape)
m <- melt(DF)
或者更明确地说:
cast(m,id+sex~variable+time)
您可以将其缩减为一行:
recast(DF,id+sex~...)
如果您愿意,您可以使用较新的
restrape2
软件包,而不是restrape
,将cast
替换为dcast
(restrape2
中包含的recast
版本没有给出所需的结果)。考虑到提出这个问题的日期,Ben的答案非常好。但是,应该注意的是,在较新版本的“data.table”中包含的dcast
函数可以处理类似的问题,而无需先融化
数据。因此,这将是一种更有效的使用方法
library(data.table)
dcast(as.data.table(DF), id + sex ~ time, value.var = c("score1", "score2"))
## id sex score1_Time1 score1_Time2 score1_Time3 score2_Time1 score2_Time2 score2_Time3
## 1: subject 1 m 0.78213630 -0.1557955 -0.10278773 1.5771598 1.013447 1.4583278
## 2: subject 2 m 0.07456498 -1.4707524 0.38767161 0.2372536 2.787854 3.0741317
## 3: subject 3 m -1.98935170 -0.4781501 -0.05380504 4.4001015 2.226653 0.4493848
## 4: subject 4 f 0.61982575 0.4179416 -1.37705956 3.0527030 2.755023 3.5244309
## 5: subject 5 f -0.05612874 1.3586796 -0.41499456 0.6580944 2.829981 1.5924235
? 我看不出最后的投票结果是什么?本用整形和这么小的代码把它钉住了。我对其他方法非常开放(不确定是否/如何使用data.table等)
cast(m,id+sex~variable+time)
recast(DF,id+sex~...)
library(data.table)
dcast(as.data.table(DF), id + sex ~ time, value.var = c("score1", "score2"))
## id sex score1_Time1 score1_Time2 score1_Time3 score2_Time1 score2_Time2 score2_Time3
## 1: subject 1 m 0.78213630 -0.1557955 -0.10278773 1.5771598 1.013447 1.4583278
## 2: subject 2 m 0.07456498 -1.4707524 0.38767161 0.2372536 2.787854 3.0741317
## 3: subject 3 m -1.98935170 -0.4781501 -0.05380504 4.4001015 2.226653 0.4493848
## 4: subject 4 f 0.61982575 0.4179416 -1.37705956 3.0527030 2.755023 3.5244309
## 5: subject 5 f -0.05612874 1.3586796 -0.41499456 0.6580944 2.829981 1.5924235