2016-03-28 25 views
3

ich einen Datenrahmen in R wie diese haben (viel mehr als das, aber ich denke, es ist eine Zusammenfassung):R Split-Matrix, die durch jede Spalte Wert

label id value1 value2 
p01  1  0  0 
p02  2  1  3 
p03  1  0  5 
p04  2  2  4 
p05  3  6  7 
p06  1  0  8 

und möchte sie von jedem 1-Wert aufzuspalten in ID-Spalte. Also im Ergebnis sollte ich 3 Untermatrizen haben wie:

p01  1  0  0 
p02  2  1  3 

p03  1  0  5 
p04  2  2  4 
p05  3  6  7 

p06  1  0  8 

Wie könnte ich das tun? Ich habe versucht:

result=split(xx,xx$id==1) 

aber es trennt 1 und andere.

Antwort

5

Wir können die Gruppenvariable erstellen, indem die kumulative Summe des logischen Vektors unter (df1$id==1)

split(df1,cumsum(df1$id==1)) 
#$`1` 
# label id value1 value2 
#1 p01 1  0  0 
#2 p02 2  1  3 

#$`2` 
# label id value1 value2 
#3 p03 1  0  5 
#4 p04 2  2  4 
#5 p05 3  6  7 

#$`3` 
# label id value1 value2 
#6 p06 1  0  8 
Verwandte Themen