Reshaping an array to data.frame
Use as.data.frame.table()
.
d0 <- as.data.frame.table(x)head(d0)# Subject Cond Item Var4 Freq# 1 s1 A 1 Measure1 -0.93# 2 s2 A 1 Measure1 0.39# 3 s3 A 1 Measure1 0.88# 4 s4 A 1 Measure1 0.63# 5 s5 A 1 Measure1 0.86# 6 s1 B 1 Measure1 -0.69library(tidyr)d1 <- pivot_wider(data = d0, names_from = "Var4", values_from = "Freq")head(d1)# Subject Cond Item Measure1 Measure2 Measure3# 1 s1 A 1 -0.93 -0.360 -0.005# 2 s1 A 2 -0.01 -0.190 -0.050# 3 s1 B 1 -0.69 0.070 0.170# 4 s1 B 2 -0.07 -0.150 0.060# 5 s2 A 1 0.39 1.043 1.090# 6 s2 A 2 0.79 -1.390 0.110
Yes, use adply()
:
adply(x, c(1,2,3)) Subject Cond Item Measure1 Measure2 Measure31 s1 A 1 -0.93 -0.360 -0.0052 s2 A 1 0.39 1.043 1.0903 s3 A 1 0.88 0.330 0.3604 s4 A 1 0.63 -0.120 0.0405 s5 A 1 0.86 -0.055 0.0906 s1 B 1 -0.69 0.070 0.1707 s2 B 1 1.02 0.670 0.6808 s3 B 1 0.29 0.480 0.5109 s4 B 1 0.94 0.002 0.09010 s5 B 1 0.93 0.008 0.12011 s1 A 2 -0.01 -0.190 -0.05012 s2 A 2 0.79 -1.390 0.11013 s3 A 2 0.32 0.980 0.99014 s4 A 2 0.14 0.430 0.62015 s5 A 2 0.13 -0.020 0.13016 s1 B 2 -0.07 -0.150 0.06017 s2 B 2 -0.63 -0.080 0.27018 s3 B 2 0.26 0.740 0.74019 s4 B 2 0.07 0.960 0.96020 s5 B 2 0.87 0.440 0.450