2017-04-06 3 views
2

Ich versuche, eine Pivot-Tabelle mit einem berechneten Feld in R. Rahmen ist ähnlich wie dieses Meine Daten zu konstruieren:Wie kann ich eine Pivot-Tabelle in R mit einem berechneten Feld machen?

number hour tot  cefe sell 
     1 09:00 50   2  1 
     1 10:00 52  NA NA 
     1 11:00 72   4  1 
     1 12:00 96   3 NA 
     1 13:00 90   4  1 
     1 14:00 98   2  1 
     2 08:00 38   4  1 
     2 09:00 427  16  2 
     2 10:00 493  16  1 
     2 11:00 340  16 NA 
     2 12:00 571  20  2 
     2 13:00 547  23  2 
     2 14:00 578  25  4 

ich als Zeilen mit „number“ Variable eine Pivot-Tabelle konstruieren muß, „Stunde "als Spalten und das Ergebnis von" cefe/tot "als Wert. Ich möchte keine weitere Spalte hinzufügen oder einen anderen Datenrahmen dafür erzeugen, aber ich weiß nicht, wie ich das machen soll. Ich habe versucht, mit Cast-Funktion, aber es gilt nur "verkaufen" Variable als Wert. Irgendeine Idee?

Antwort

2

Sie können dies mit dplyr und tidyr tun, obwohl dieses Skript technisch eine neue Spalte als Teil seiner Transformation erstellt.

library(dplyr) 
library(tidyr) 

x %>% 
    mutate(cefetot = cefe/tot) %>% 
    select(number, hour, cefetot) %>% 
    spread(key = hour, value = cefetot) 
+1

Oder ähnlich 'x%>% group_by (Anzahl, Stunde)%>% summarize (cefetot = cefe/tot)%>% Spread (Stunde, ct)' –

+1

Ihre erste Antwort gut funktioniert, Vielen Dank für Ihre Hilfe! –

Verwandte Themen