在this answer之后,我想知道是否有一种方法可以将宽格式的数据.帧(time1
、time2
、time1and2
)转换为单个长格式的数据.帧,以实现下面的Desired_output
?
time1 = read.table(text = "
class id order ac bc
1 1 s-c 1 2
", header = TRUE)
time2 =read.table(text = "
class id order ac bc
1 1 s-c 3 4
", header = TRUE)
time1and2 = read.table(text = "
class id order ex1S ex2S ex1C ex2C k1 k2 t1 t2
1 1 s-c 8 5 6 1 400 600 30 50
", header = TRUE)
Desired_output = read.table(text = "
class id order time DV score k t ave_ex
1 1 s-c 1 ac 1 400 30 (8+5)/2 =6.5
1 1 s-c 1 bc 2 400 30 (8+5)/2 =6.5
1 1 s-c 2 ac 3 600 50 (6+1)/2 =3.5
1 1 s-c 2 bc 4 600 50 (6+1)/2 =3.5
", header = TRUE)
其中ave_ex
= ex
的平均值。
2条答案
按热度按时间mrzz3bfm1#
首先,将它们设置为长格式:
然后,团结起来:
yhived7q2#
ac
和bc
列堆叠到time1
和time2
中,并按行绑定它们。time1and2
中,首先需要将ex1S, ex2S, ex1C, ex2C
重命名为ex11, ex21, ex12, ex22
(这里我使用chartr()
来实现),以便可以堆叠列对(ex11, ex12)
至ex1
(ex21, ex22)
至ex2
(k1, k2)
至k
(t1, t2)
至t
同时。
time
、class
、id
和order
将它们合并,并计算ex1
和ex2
的平均值。