2016-04-05 4 views

Antwort

0

Es scheint aus Ihrer Frage, dass Sie versuchen, etwas wie eine Umformung von langen zu großen Format zu tun. Hier ist, wie Sie die Basis R reshape() dies zu tun verwenden können:

mydata <- data.frame(id=c(1L,1L,2L,2L,2L),mycol=c('a','b','c','c','e'),counter=c(1L,2L,1L,2L,3L),stringsAsFactors=F); 
reshape(mydata,dir='w',idvar='id',timevar='counter'); 
## id mycol.1 mycol.2 mycol.3 
## 1 1  a  b <NA> 
## 3 2  c  c  e 

reshape() nicht so präzise Kontrolle über die resultierenden Spaltennamen nicht unterstützt. Sie können sie später selbst reparieren. Vorausgesetzt, dass Sie das obige Ergebnis als res gespeichert haben, können Sie dies tun:

colnames(res) <- sub(perl=T,'^mycol\\.','',colnames(res)); 
res; 
## id 1 2 3 
## 1 1 a b <NA> 
## 3 2 c c e 
+0

Vielen Dank für die Antwort, aber wo im Code beziehen Sie sich auf Mycol? – user4797853

+0

Ich frage, weil es nicht für mich funktioniert hat – user4797853

+0

Neben 'mycol' als Name der mittleren Spalte beim Definieren des' mydata' Objekts, verweise ich nicht auf 'mycol' im Code. Die 'reshape()' Funktion konstruiert dynamisch die weit variierenden Spalten aus den Nicht-Idvar Nicht-Zeitvar Spalten. – bgoldst

Verwandte Themen