2015-06-16 4 views
1

Я создал макет данные, такие как,как объединить data.frame в один столбец?

d1<-structure(list(`1` = c(10L, 15L, 20L), `2` = c(20L, NA, 15L), 
`3` = c(30L, 25L, NA)), .Names = c("1", "2", "3"), 
    class = "data.frame",  row.names = c(NA, -3L)) 

Теперь я хочу, чтобы преобразовать как,

d2<-structure(list(Name = structure(1:3, .Label = c("1,10|2,20|3,30", 
"1,15|2,0|3,25", "1,20|2,15|3,0"), class = "factor")), 
.Names = "Name", class  = "data.frame", row.names = c(NA, -3L)) 

Как я могу это сделать?

Заранее спасибо.

+3

Название является очень широким, может быть, она должна быть улучшена, так что-то ближе к тому, что вы пытаетесь сделать. – SabDeM

+0

Я немного изменил заголовок. Пожалуйста, пересмотреть его и посмотреть, не по-прежнему ли он зафиксировал суть дела. –

ответ

2

Попробуйте

d1N <- d1 
d1N[is.na(d1N)] <- 0 
d1N[] <- paste(col(d1N), as.matrix(d1N), sep=',') 

data.frame(Name=do.call(paste, c(d1N, sep='|'))) 
#   Name 
#1 1,10|2,20|3,30 
#2 1,15|2,0|3,25 
#3 1,20|2,15|3,0