2016-03-23 8 views
-2

ich einen Datenrahmen mit 8 Variablen:Wie übertragen Sie mehrere Faktoren in eine Zeile?

enter image description here

Für die Variable Labor Category, haben wir 5 Faktoren: Ferien Arbeitete, Regular, Überstunden, Schulung, sonstige Arbeitete.

Die Frage ist: Kann ich einen Weg zu aggregieren Zeilen mit gleichen Werten außer Labor Category und resümieren die Sum_FTE Variable finden

also können wir die Anzahl der Zeilen zu reduzieren, während weitere Spalten hinzufügen:

" Labour.CategoryHoliday.Worked "," Labour.CategoryOther.Worked "," Labour.CategoryOvertime "," Labour.CategoryRegular "," Labour.CategoryTraining "und verwenden Sie 0 oder 1, um den Status jedes Faktors anzuzeigen. Und dann summieren Sie die Gesamt-FTE aus Zeilen mit denselben Werten außer Labour-Kategorie.

enter image description here

Antwort

0

Wir können durch Operationen einer der Gruppe tun. Unter Verwendung von dplyr spezifizieren wir die Spaltennamen in der group_by als Gruppierungsvariablen und erhalten dann die sum von "Sum_FTE" mit summarise.

library(dplyr) 
df1 %>% 
    group_by_(.dots= names(df1)[c(1:2,4:5)]) %>% 
    summarise(TotalFTE= sum(Sum_FTE)) 

Für den zweiten Teil der Frage, können wir dcast verwenden (es wäre besser gewesen, den Datensatz mit dput statt Bilddatei anzuzeigen) für

library(data.table) 
setDT(df1)[, N := 1:.N, (Labor.Category)] 
dcast(df1, Med.Center+Charged.Job+Month+Pay.Period.End ~N, 
      value.var="Labor.Category, length) 
+0

Dank Ihr kindly antworten . Aber für den zweiten Teil habe ich mehr als 20.000 neue Variablen erstellt, was darauf hinweist, dass sie falsch sind. –

+0

@BeichenLin Im zweiten Teil hatte ich auch Zweifel, da ich es ohne ein gutes Beispiel nicht testen konnte. Sie haben ein Bild gepostet, von dem es schwierig ist, ein funktionierendes Beispiel zu erstellen. Können Sie Ihren Post mit 'dput'-Ausgabe des Beispiels i .. 'dput (dropevels (head (yourdata, 10)))' und die erwartete Ausgabe basierend auf diesem Beispiel aktualisieren. – akrun

Verwandte Themen