2016-04-27 52 views
0

我使用R和我有一樣使用tidyr傳播()轉動和下降來港

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

數據,我想轉換到

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

我試圖使用spread()tidyr,但不能完全讓它給我輸出我需要的方式。我能來最接近的是

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

是否有人可以幫助我得到它所需的格式?

+0

你得到的輸出(我是從'傳播(DF,COL1,COL2假設)')就是你通過'tidyr'期待什麼。 – SymbolixAU

+1

'v2 < - split(df $ v2,df $ v1); (x2)函數(x){c(x,rep(NA,max(sapply(v2,length)) - length(x)))}))' – alistaire

回答

0

這裏是我如何做到這一點的基礎:

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>