J'ai un 496 cadres de données des stocks S & P 500. chaque dataframe a un nom différent et un nom de colonne comme ceux-ci
AAL.Open AAL.High AAL.Low AAL.Close AAL.Volume
09-12-13 23.85 25.44 23.45 24.6 43197268
10-12-13 24.5 25.17 24.41 24.88 18660625
AA.Open AA.High AA.Low AA.Close AA.Volume
09-12-13 22.5 24.25 20.13 21 6639
10-12-13 21.2 21.2 20.89 21 10963
Maintenant, je veux créer une nouvelle Dataframe de 496 colonnes en prenant une colonne particulière de chaque dataframes comme celle-ci.
AAL.High AA.High ----- ------
09-12-13 25.44 24.25
10-12-13 25.17 21.2
Réponses:
2 pour la réponse № 1Nous plaçons les jeux de données dans un list
et extraire la colonne d'intérêt. Selon le code de l’opérateur, les noms des colonnes ne sont pas exacts. SO, nous pourrions soit utiliser grep
do.call(cbind, lapply(lst, function(x) x[grep("High", names(x))]))
ou la position de la colonne par indexation numérique
do.call(cbind, lapply(lst, function(x) x[2]))
REMARQUE: Supposons que les jeux de données sont data.frame
Les données
lst <- list(d1, d2)
Ou avec dput
lst <- list(structure(list(AAL.Open = c(23.85, 24.5), AAL.High = c(25.44,
25.17), AAL.Low = c(23.45, 24.41), AAL.Close = c(24.6, 24.88),
AAL.Volume = c(43197268L, 18660625L)), .Names = c("AAL.Open",
"AAL.High", "AAL.Low", "AAL.Close", "AAL.Volume"), class = "data.frame",
row.names = c("09-12-13",
"10-12-13")), structure(list(AA.Open = c(22.5, 21.2), AA.High = c(24.25,
21.2), AA.Low = c(20.13, 20.89), AA.Close = c(21L, 21L),
AA.Volume = c(6639L,
10963L)), .Names = c("AA.Open", "AA.High", "AA.Low", "AA.Close",
"AA.Volume"), class = "data.frame", row.names = c("09-12-13",
"10-12-13")))