2016-04-27 4 views
0

I R verwenden, und ich habe Daten wieMit Spread() in tidyr NAs zu schwenken und fallen

California | Los Angeles 
California | San Diego 
California | San Francisco 
New York | Albany 
New York | New York City 

, die ich

California | New York 
Los Angeles | Albany 
San Diego | New York City 
San Francisco | NA 

umwandeln mag ich spread() zu verwenden versuchen in tidyr aber kann es nicht ganz bekommen, um mir die Ausgabe so zu geben, wie ich es brauche. Der nächste, den ich kommen kann, ist

California | New York 
Los Angeles | NA 
San Diego | NA 
San Francisco | NA 
NA | Albany 
NA | New York City 

Kann mir bitte jemand helfen, es im gewünschten Format zu bekommen?

+0

Die Ausgabe, die Sie erhalten (Ich gehe davon aus 'verbreiten (df, col1, col2)') ist genau das, was man von 'tidyr' erwarten. – SymbolixAU

+1

'v2 <- split (df $ v2, df $ v1); data.frame (lapply (v2, Funktion (x) {c (x, rep (NA, max (sapply (v2, Länge)) - Länge (x)))})) ' – alistaire

Antwort

0

Hier ist, wie ich es in der Basis zu tun:

df<-data.frame(v1=c(rep("California",3), rep("New York",2)), v2=c("Los Angeles", "San Diego", "San Franciso", "Albany", "New York City")) 

cali<-as.character(df[df$v1=="California", 2]) 
ny<-as.character(df[df$v1=="New York", 2]) 

new <- data.frame(California=cali, NewYork=c(ny, NA)) 

new 
    California  NewYork 
1 Los Angeles  Albany 
2 San Diego New York City 
3 San Franciso   <NA>