Reshaping an array to data.frame Reshaping an array to data.frame r r

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


df = melt(x) gives you something very similar to what you want. Then you could compute the various measure variables from the different levels of measure.

Using the "reshape2" package, try:

dcast(melt(x), Subject + Cond + Item ~ Var4)