2017-04-07 4 views
-1

Ich habe Datenrahmen, die ich versuche, jede Spalte für eine bestimmte Bedingung zu summieren. Ich benutze die Colsum-Funktion. Basierend auf diesem Ergebnis möchte ich einen Datenrahmen erstellen.Wie erstelle ich einen Datenrahmen aus einer Spalte Funktion

Siehe Code

> colSums(Product.TRx[5:10]) 

2011-04 2011-05 2011-06 2011-07 2011-08 2011-09 2011-10 2011-11 2011-12 
     0  0 23318 21187 23933 22911 22600 23053 23467  

Basierend auf diesen Ergebnissen würde ich einen Datenrahmen mit den Monaten erstellen möchten (z. B. 2010-11) als Spaltennamen und ihre entsprechenden Werte. Ich werde eine neue Spalte namens „Produkt“ addieren und der Wert ‚AAAAAA‘ Die Datenrahmen wie diese

Product 2011-04 2011-05 2011-06 2011-07 2011-08 2011-09 2011-10 2011-11 2011-12 
AAAAAA  0  0 23318 21187 23933 22911 22600 23053 23467 

aussehen sollte Wie code ich dies in R?

Ihre Hilfe wird sehr geschätzt.

Antwort

1

Ihre Daten Unter der Annahme ist eine numerische Matrix mit Spaltennamen, wie folgt aus:

> m = matrix(1:12,3,4) 
> colnames(m)=c("A","B","C","D") 

Dann folgendes tun:

> data.frame(Product="AAAA",t(colSums(m))) 
    Product A B C D 
1 AAAA 6 15 24 33 

Wenn Ihr Ding einen Datenrahmen ist, es funktioniert immer noch:

> md=data.frame(m) 
> md$D = runif(3) # mix up some floats 
> data.frame(Product="AAAA",t(colSums(md))) 
    Product A B C  D 
1 AAAA 6 15 24 1.285573 
+0

Falls es keine Matrix und hat Ints gemischt und schwimmt: 'data.frame (Product = "AAA", lapply (bebt , Summe)), denke ich. – Frank

+0

Scheint auch mit einem DF zu arbeiten .. Ich werde bearbeiten ... – Spacedman

+0

Ja, ich meinte, dass deine Antwort funktioniert, aber colSums wird erzwingen (was nur in dem speziellen Fall wichtig ist, den ich erwähnt habe). – Frank

0

Sie können einfach as.data.frame als solche verwendet werden:

df <- as.data.frame(t(colSums(Product.TRx[5:10]))) 

Und dann fügen Sie Ihre zusätzliche Spalte:

df$Product <- "AAAAAA" 
Verwandte Themen