所以这就是我想要做的。我有一个数据集,所有结果都列在一个列中,但是观察它们的步骤和用于观察它们的方法在不同的列中。我将多个站点视为唯一标识符。并非每个站点都有相同数量的步骤或方法,也不是每个方法都在每个步骤中完成。例如,站点 a1 可能在每个步骤都有步骤 s1-s5 和方法 m1-m25,而站点 a9 可能有步骤 s1-s15,但只有方法 m3-m9。基本上,给定站点/步骤/方法可能会丢失数据。不是每个站点都有每个步骤,也不是每个步骤都有每个方法。原始数据集看起来有点像这样:
site step method outcome
a1 S 1 m1 5
a1 S 1 m2 1
a1 S 2 m6 4
a2 S 1 m6 1a
a2 S 1 m4 3
a2 S 3 m7 2
a2 S 4 m2 7
a3 S 1 m1 2a
a3 S 1 m2 c11
a4 S 1 m4 2
a4 S 2 m2 5
a5 S 3 m3 6
a6 S 2 m1 7
a6 S 3 m4 8
结果有一些数字和字符值,具体取决于方法
step 是唯一真正的“时间”变量,但我觉得我也需要将 r 视为一种方法。现在数据的方式有很多行,只有这几列,现在数据的设置方式我无法对其进行任何分析。
我使用 reshape 如下(我尝试过其他 reshape 语句,但这是一个例子),不幸的是不会让我使用 2 个时间变量
mydata<-reshape(rawdata,idvar="site",timevar="step",direction="wide")
site method.S 1 outcome.S 1 method.S 2 outcome.S 2 method.S 3 outcome.S 3
1 a1 m1 5 m6 4 <NA> NA
4 a2 m6 1 <NA> NA m7 2
8 a3 m1 2 <NA> NA <NA> NA
10 a4 m4 2 m2 5 <NA> NA
12 a5 <NA> NA <NA> NA m3 6
13 a6 <NA> NA m1 7 m4 8
method.S 4 outcome.S 4
1 <NA> NA
4 m2 7
8 <NA> NA
10 <NA> NA
12 <NA> NA
13 <NA> NA
这是 r 的输出
正确的是,我只希望每个站点有 1 行和许多列(即使站点在特定步骤没有做任何事情)。我正在尝试每个站点获得 1 行,然后结果列将消失,其所有值都位于适当的列下方,如下所示
site S1.m1.outcome S1.m2.outcome S1.m3.outcome ................ S9.m10.outcome
a1 1 c4.5 NA 3.6
所以基本上每个步骤和方法组合一列,我知道那是很多列,但它会使步骤之间的比较更容易,这是我的目标之一,我这样做的主要目的是能够给定方法,使用 t 检验等测试步骤之间结果的变化,以检验均值的差异。我想有一种更简单的方法可以进行测试,但我对 r 还是新手,还没有找到。感谢您的任何建议欢呼