/ / Créer une nouvelle base de données en utilisant la colonne d'une autre base de données - r, base de données, plusieurs colonnes

Créer un nouveau cadre de données en utilisant la colonne d'un autre dataframe - r, dataframe, plusieurs colonnes

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 № 1

Nous 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")))