J'essaie de croiser des tables à partir d'une liste de données générées à partir de données brutes. La base de données originale comprend 1004 observations de 8 variables.Colnames et noms de code ne sont plus disponibles après le stockage des trames de données dans une liste
> summary(mydata)
ARTICLE COMPSYNT2 POSITION COMPTYPE SUBSTYPE2 VARIANT
No :832 NP :342 Fin :535 Hum :435 Comp : 2 Lieu :504
Yes:172 DetPoss :334 Init:284 SoA :232 Conc : 12 Place:500
NFClau :238 Med :185 Conc :160 Contr:426
SubClau : 30 Abstr :102 Dep : 45
ProForm : 20 Prop : 31 Emp :104
PronPers: 16 Plant : 17 Repl :327
(Other) : 24 (Other): 27 Subst: 88
DECADE GENRE2
Min. :1500 Treat_Ess:299
1st Qu.:1618 Novel :219
Median :1650 Drama :143
Mean :1644 Poetry : 86
3rd Qu.:1680 Memoirs : 82
Max. :1710 Corresp : 81
(Other) : 94
Je voulais obtenir un dataframe pour chaque niveau de la variable « DÉCENNIE » (il y a 21 ans). Je l'ai fait ce qui suit:
> mydata.split<-split(mydata, mydata$DECADE)
# remove the column "DECADE" since no longer needed
> mydata.split<-lapply(mydata.split, function(x) x=x[, -7])
> french.split[1:2] # outputs the first two elements of the list
$`1500`
ARTICLE COMPSYNT2 POSITION COMPTYPE SUBSTYPE2 VARIANT GENRE2
1 No NFClau Med SoA Contr Lieu Poetry
$`1510`
ARTICLE COMPSYNT2 POSITION COMPTYPE SUBSTYPE2 VARIANT GENRE2
2 No PronPers Fin Hum Contr Lieu Novel
3 No NP Init Hum Repl Lieu Novel
4 No NP Init Conc Subst Lieu Treat_Ess
Puis, afin de croiser chaque trame de données de la liste en fonction de la variable « VARIANT », j'accédé chaque table séparément et tableau croisé appliqué dans une boucle for pour colonnes 1: n avec la colonne "VARIANT", puis essayé d'empiler toutes les trames de données en un (pour chaque décennie), sans succès.
> y1560s<-as.data.frame(mydata.split[6])
> for(i in 1:ncol(y1560s)){
+ cross.table<-table(y1560s[, i], y1560s[, 6])
+ data.list<-append(cross.table, data.list)
+ big.table<-do.call(cbind, data.list)
+ }
Et la sortie est très étrange:
> head(big.table)
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13] [,14]
[,15] [,16] [,17] [,18] [,19] [,20] [,21] [,22] [,23] [,24] [,25] [,26] [,27]
[,28] [,29] [,30] [,31] [,32] [,33] [,34] [,35] [,36] [,37] [,38] [,39] [,40]
[,41] [,42] [,43] [,44] [,45] [,46] [,47] [,48] [,49] [,50] [,51] [,52] [,53]
[,54] [,55] [,56] [,57] [,58] [,59] [,60] [,61] [,62] [,63] [,64] [,65] [,66]
[,67] [,68] [,69] [,70] [,71] [,72] [,73] [,74] [,75] [,76] [,77] [,78] [,79]
[,80] [,81] [,82] [,83] [,84] [,85] [,86] [,87] [,88] [,89] [,90] [,91] [,92]
Ce qui était attendu est une grande table comme celui ci-dessous, mais le processus a ensuite adopté est assez lourd.
> article<-table(y1560s[, 1], y1560s[, 6])
> compsynt<-table(y1560s[, 2], y1560s[, 6])
> position<-table(y1560s[, 3], y1560s[, 6])
> comptype<-table(y1560s[, 4], y1560s[, 6])
> substype<-table(y1560s[, 5], y1560s[, 6])
> genre<-table(y1560s[, 7], y1560s[, 6])
> big.table<-rbind(article, compsynt, position, comptype, substype, genre)
> big.table
Lieu Place
No 14 4
Yes 0 3
AdjP 0 0
DetPoss 0 4
Gap 0 0
NFClau 6 0
NP 6 2
Num 0 0
ProForm 2 1
PronPers 0 0
PronPoss 0 0
SubClau 0 0
Fin 7 5
Init 2 2
Med 5 0
Abstr 3 1
Act 0 0
Anim 0 0
Conc 2 0
Hum 1 6
Plant 2 0
Prop 0 0
SoA 6 0
Comp 0 0
Conc 0 0
Contr 6 1
Dep 0 2
Emp 0 1
Repl 4 2
Subst 4 1
Corresp 0 0
Drama 1 1
Memoirs 0 0
Non-Litt 0 0
Novel 0 1
Other 0 0
Pamphlet 0 0
Poetry 0 1
Rhetoric 0 0
Travel 0 0
Treat_Ess 13 4
Undef 0 0
est-il un moyen plus facile à 1) accéder aux trames de données stockées dans la liste des décennies et 2) pour empiler toutes les tables avec la variable « VARIANT » comme une constante pour chaque élément de la liste des décennies ?
Je vous remercie d'avance pour vos suggestions et astuces.
CBechet.
EDIT: en essayant les aspects suivants prometteurs, je ne parviens tout simplement pas à stocker les données résultantes dans une liste pour un traitement ultérieur.
> for(i in 1:length(mydata.split)) {
+ mytable<-as.data.frame(mydata.split[i])
+ article<-table(mytable[, 2], mytable[, 1])
+ compsynt<-table(mytable[, 3], mytable[, 1])
+ position<-table(mytable[, 4], mytable[, 1])
+ comptype<-table(mytable[, 5], mytable[, 1])
+ substype<-table(mytable[, 6], mytable[, 1])
+ genre<-table(mytable[, 7], mytable[, 1])
+ big.table<-as.data.frame(rbind(article, compsynt, position, comptype, substype, genre))
}
Il est probablement là. Essayez simplement de regarder 'big.table [1: 5, 1: 5]' ou quelque chose comme ça pour vérifier que l'info est là. – A5C1D2H2I1M1N2O1R2T1
Impossible d'obtenir des valeurs pour toutes ces colonnes, car elles n'existent pas réellement. Il semble que la grande table a été vectorisée. – CBechet