2016-04-27 1 views
0

Я использую R и у меня есть данные, какИспользуя распространение() в tidyr поворота и падение Nas

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, но не может получить его, чтобы дать мне результат так, как он мне нужен. Ближайший я могу приехать

Может кто-нибудь, пожалуйста, помогите мне получить его в нужном формате?

+0

Выход вы получите (я предполагаю, что из 'распространения (Д.Ф., col1, col2)') именно то, что можно было бы ожидать от 'tidyr'. – SymbolixAU

+1

'v2 <- split (df $ v2, df $ v1); data.frame (lapply (v2, function (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>