Convert an Array into a Data Frame¶
Description¶
to.data.frame
converts an array into a data frame, in such a way that a chosen
dimensional extent forms variables in the data frame. The elements of the array must be
either atomic, data frames with matching variables, or coercable into such data frames.
Usage¶
to.data.frame(X,as.vars=1,name="Freq")
Arguments¶
X
-
an array.
as.vars
-
a numeric value or a character string. If it is a numeric value then it indicates the dimensional extend which defines the variables. If it is a character string then it is matched against the names of the dimenstional extents. This is applicable e.g. if
X
is a contingency table and the dimensional extents are named after the cross-classified factors. Takes effect only ifX
is an atomic array. Ifas.vars
equals zero, a new variable is created that contains the values of the array, that is,to.data.frame
acts on the arrayX
likeas.data.frame(as.table(X))
name
-
a character string; the name of the variable created if
X
is an atomic array andas.vars
equals zero.
Value¶
A data frame.
Examples¶
berkeley <- Aggregate(Table(Admit,Freq)~.,data=UCBAdmissions)
berktest1 <- By(~Dept+Gender,
glm(cbind(Admitted,Rejected)~1,family="binomial"),
data=berkeley)
berktest2 <- By(~Dept,
glm(cbind(Admitted,Rejected)~Gender,family="binomial"),
data=berkeley)
Stest1 <- Lapply(berktest2,function(x)predict(x,,se.fit=TRUE)[c("fit","se.fit")])
Stest2 <- Sapply(berktest2,function(x)coef(summary(x)))
Stest2.1 <- Lapply(berktest1,function(x)predict(x,,se.fit=TRUE)[c("fit","se.fit")])
to.data.frame(Stest1)
Dept fit se.fit
1 A 0.4921214 0.07174966
2 A 1.5441974 0.25272027
3 B 0.5337493 0.08754301
4 B 0.7537718 0.42874646
5 C -0.5355182 0.11494077
6 C -0.6604399 0.08664894
7 D -0.7039581 0.10407019
8 D -0.6219709 0.10831411
9 E -0.9569618 0.16159920
10 E -1.1571488 0.11824880
11 F -2.7697438 0.21978068
12 F -2.5808479 0.21171027
to.data.frame(Stest2,as.vars=2)
Var1 Dept Estimate Std. Error z value Pr(>|z|)
1 (Intercept) A 0.49212143 0.07174966 6.8588682 6.940825e-12
2 GenderFemale A 1.05207596 0.26270810 4.0047336 6.208742e-05
3 (Intercept) B 0.53374926 0.08754301 6.0969945 1.080813e-09
4 GenderFemale B 0.22002254 0.43759263 0.5028022 6.151033e-01
5 (Intercept) C -0.53551824 0.11494077 -4.6590799 3.176259e-06
6 GenderFemale C -0.12492163 0.14394242 -0.8678583 3.854719e-01
7 (Intercept) D -0.70395810 0.10407019 -6.7642627 1.339898e-11
8 GenderFemale D 0.08198719 0.15020836 0.5458231 5.851875e-01
9 (Intercept) E -0.95696177 0.16159920 -5.9218225 3.183932e-09
10 GenderFemale E -0.20018702 0.20024255 -0.9997227 3.174447e-01
11 (Intercept) F -2.76974377 0.21978068 -12.6023077 2.050557e-36
12 GenderFemale F 0.18889583 0.30516354 0.6189987 5.359172e-01
to.data.frame(Stest2.1)
Dept Gender fit se.fit
1 A Male 0.4921214 0.07174966
2 B Male 0.5337493 0.08754301
3 C Male -0.5355182 0.11494077
4 D Male -0.7039581 0.10407019
5 E Male -0.9569618 0.16159920
6 F Male -2.7697438 0.21978068
7 A Female 1.5441974 0.25272027
8 B Female 0.7537718 0.42874646
9 C Female -0.6604399 0.08664894
10 D Female -0.6219709 0.10831411
11 E Female -1.1571488 0.11824870
12 F Female -2.5808479 0.21171027
# Recasting a contingency table
to.data.frame(UCBAdmissions,as.vars="Admit")
Gender Dept Admitted Rejected
1 Male A 512 313
2 Female A 89 19
3 Male B 353 207
4 Female B 17 8
5 Male C 120 205
6 Female C 202 391
7 Male D 138 279
8 Female D 131 244
9 Male E 53 138
10 Female E 94 299
11 Male F 22 351
12 Female F 24 317