2017-04-07 3 views
0

Ich habe Daten aus einer Online-Umfrage, wo die Befragten eine Reihe von 5 Fragen durchlaufen. Die Daten, die ich an arbeite wie folgt aussehen:Sammeln von Gruppen von Spalten

P1 P2 P3 P4 P5 P1 P2 P3 P4 P5 P1 P2 P3 P4 P5 
    1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 
    6 7 8 9 10 6 7 8 9 10 6 7 8 9 10 

Die gewünschte Ausgabe ist:

 P1 P2 P3 P4 P5 
    1 2 3 4 5 
    6 7 8 9 10 
    1 2 3 4 5 
    6 7 8 9 10 
    1 2 3 4 5 
    6 7 8 9 10 

Ich habe versucht, dieses Problem mit Bibliothek tidyr zu lösen, aber ich kann nicht verstehen, wie man Wende es an. Einige Ratschläge dazu werden sehr hilfreich sein.

+1

Können Sie 'Ihre Daten für uns dput'? Willst du nur jeden Satz von 5 Spalten zusammenstapeln? – A5C1D2H2I1M1N2O1R2T1

+0

überprüfen Sie http://StackOverflow.com/Questions/15803057/binding-columns-with-similar-column-names-in-the-Same-Dataframe-in-Rr – timfaber

+0

Ich nehme an, das funktioniert auch: 'data.frame (split (unlist (indf, use.names = FALSE), rep (Namen (indf), each = nrow (indf)))) .... – A5C1D2H2I1M1N2O1R2T1

Antwort

0

Eine der Lösungen können sein:

require(foreach) 
require(dplyr) 
require(magrittr)  

foreach(
    unique_name = unique(colnames(df)), 
    .combine = 'bind_cols' 
) %do% { 

    df[grep(unique_name), colnames(df)] %>% 
    unlist() %>% 
    as.data.frame() %>% 
    set_colnames(., unique_names) 

} 
+0

Es gibt ein zusätzliches ')' in Ihrem Code – manotheshark

Verwandte Themen