Frage

Ich habe einen data.frame genannt series_to_plot.df, die ich erstellt durch eine Reihe von anderem data.frames zusammen kombiniert (siehe unten). Ich möchte jetzt nur noch die .mm Spalte von jedem von diesen ziehen, so dass ich sie zeichnen kann. Also habe ich die dritte Spalte jeder data.frame (zB p3c3.mm, p3c4.mm etc ...) herausziehen will, aber ich kann nicht ohne Durchschleife für alle data.frames im Objekt sehen, wie dies zu tun der Name. Ist das möglich?

kann ich nur einen Satz herausziehen: z.B. series_to_plot.df [[3]] und eine andere durch series_to_plot.df [[10]] (so ist es nur eine Liste von Vektoren ..) und ich kann direkt mit series_to_plot.df $ p3c3.mm verweisen, aber gibt es einen Befehl, einen Vektor erhalten von jedem Daten alle MMs enthält. Rahmen? Ich habe erwartet, einen Index, so etwas zu arbeiten: series_to_plot.df [3 [3]], aber es gibt Fehler in [.data.frame (series_to_plot.df, 3 [3]): undefined Spalten ausgewählt

series_to_plot.df
          p3c3.rd         p3c3.day    p3c3.mm      p3c3.sd                 p3c3.n p3c3.noo p3c3.no_NAs
    1     2010-01-04             0    0.1702531    0.04003364              7                1           0
    2     2010-01-06             2    0.1790594    0.04696674              7                1           0
    3     2010-01-09             5    0.1720404    0.03801756              8                0           0

          p3c4.rd         p3c4.day    p3c4.mm      p3c4.sd                 p3c4.n p3c4.noo p3c4.no_NAs
    1     2010-01-04             0    0.1076581   0.006542157              6                2           0
    2     2010-01-06             2    0.1393447   0.066758781              7                1           0
    3     2010-01-09             5    0.2056846   0.047722862              7                1           0

          p3c5.rd         p3c5.day    p3c5.mm      p3c5.sd                 p3c5.n p3c5.noo p3c5.no_NAs
    1     2010-01-04             0   0.07987147   0.006508766              7                1           0
    2     2010-01-06             2   0.11496167   0.046478767              8                0           0
    3     2010-01-09             5   0.40326471   0.210217097              7                1           0
War es hilfreich?

Lösung

zu den anderen Antworten hinzuzufügen, ich glaube nicht, ist es eine gute Idee ist, nützliche Informationen in Variablennamen codiert zu haben. Viel besser, um Ihre Daten neu anordnen, so dass alle notwendigen Informationen in dem Wert einer Variablen ist. Ich weiß nicht genug über Ihren Datensatz das richtige Format vorschlagen, aber es könnte so etwas wie

sein
p c         rd day date mm sd ...
3 3 2010-10-04 ...

Wenn Sie diese die Antwort auf Ihre Frage haben wird die einfache df$mm.

Wenn Sie die Daten in einer weniger nützlichen Form von einer externen Quelle bekommen, können Sie es in einer nützlicheren Form wie die oben in R mit der reshape Funktion oder Funktionen aus dem reshape Paket neu anordnen.

Andere Tipps

Um alle Spalten mit angegebenen Namen erhalten Sie tun können:

names_with_mm <- grep("mm$", names(series_to_plot.df), value=TRUE)
series_to_plot.df[, names_with_mm]

Aber wenn Sie Ihre Basis data.frame ist alles die gleiche Struktur haben, dann können Sie sie rbind, so etwas wie:

series_to_plot.df <- rbind(
  cbind(name="p3c3", p3c3),
  cbind(name="p3c4", p3c4),
  cbind(name="p3c5", p3c5)
)

Dann mm Werte sind in einer Spalte und die leichter zu plotten.

Die R Sprache Definition einige gute Informationen über die Indizierung (sec 3.4.1) hat, das ist ziemlich hilfreich .

Sie können dann die Namen ziehen, um eine Sequenz mit dem grep () Befehl entspricht. Dann Zeichenkette, die es alle zusammen wie folgt:

 dataWithMM <- series_to_plot.df[,grep("[P]", names(series_to_plot.df))]

es ein wenig dekonstruieren, wird dies die Anzahl der Spalten, die die „mm“ Muster entsprechen:

 namesThatMatch <- grep("[mm]", names(series_to_plot.df)

Dann benutzen wir diese Liste die Spalten nennen wir wollen:

  dataWithMM <- series_to_plot.df[, namesThatMatch ]
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top