将数组重新整形为data.frame [英] Reshaping an array to data.frame
本文介绍了将数组重新整形为data.frame的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有以下数据结构(原子向量?)从 daply
在 plyr
中输出,我有这个功能为每个主题,条件和项目返回三种不同的措施。
I have the following data structure (an "atomic vector?") output from daply
in plyr
, in which I had the function return three different measures for each subject, condition, and item.
x = structure(c(-0.93, 0.39, 0.88, 0.63, 0.86, -0.69, 1.02, 0.29, 0.94,
0.93, -0.01, 0.79, 0.32, 0.14, 0.13, -0.07, -0.63, 0.26, 0.07, 0.87,
-0.36, 1.043, 0.33, -0.12, -0.055, 0.07, 0.67, 0.48, 0.002, 0.008,
-0.19, -1.39, 0.98, 0.43, -0.02, -0.15,-0.08, 0.74, 0.96, 0.44, -0.005,
1.09, 0.36, 0.04, 0.09, 0.17, 0.68, 0.51, 0.09, 0.12, -0.05, 0.11,
0.99, 0.62, 0.13, 0.06, 0.27, 0.74, 0.96, 0.45), .Dim = c(5L,
2L, 2L, 3L), .Dimnames = structure(list(Subject = c("s1", "s2",
"s3", "s4", "s5"), Cond = c("A", "B"), Item = c("1", "2"), c("Measure1",
"Measure2", "Measure3")), .Names = c("Subject", "Cond",
"Item", "")))
我想将其更改为:
Subject Cond Item Measure1 Measure2 Measure3
s1 A 1 -0.93 -0.360 -0.005
s1 A 2 -0.01 -0.19 -0.05
s1 B 1 -0.69 0.070 0.17
s1 B 2 -0.07 -0.15 0.06
s2 A 1 0.39 1.043 1.090
s2 A 2 0.79 -1.39 0.11
s2 B 1 1.02 0.670 0.68
s2 B 2 -0.63 -0.08 0.27
等。
有没有简单的方法?
推荐答案
是,使用 adply()
:
adply(x, c(1,2,3))
Subject Cond Item Measure1 Measure2 Measure3
1 s1 A 1 -0.93 -0.360 -0.005
2 s2 A 1 0.39 1.043 1.090
3 s3 A 1 0.88 0.330 0.360
4 s4 A 1 0.63 -0.120 0.040
5 s5 A 1 0.86 -0.055 0.090
6 s1 B 1 -0.69 0.070 0.170
7 s2 B 1 1.02 0.670 0.680
8 s3 B 1 0.29 0.480 0.510
9 s4 B 1 0.94 0.002 0.090
10 s5 B 1 0.93 0.008 0.120
11 s1 A 2 -0.01 -0.190 -0.050
12 s2 A 2 0.79 -1.390 0.110
13 s3 A 2 0.32 0.980 0.990
14 s4 A 2 0.14 0.430 0.620
15 s5 A 2 0.13 -0.020 0.130
16 s1 B 2 -0.07 -0.150 0.060
17 s2 B 2 -0.63 -0.080 0.270
18 s3 B 2 0.26 0.740 0.740
19 s4 B 2 0.07 0.960 0.960
20 s5 B 2 0.87 0.440 0.450
这篇关于将数组重新整形为data.frame的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文