2013-06-10 18 views
11

Bu adlandırılmış vektörü vardır:dönüştürme adlı vektör dataframe için

x <- 1:5 

names(x) <- c('0 15', '1 15', '2 15', '0 16', '1 16') 

Bunun dataframe için x dönüştürmek için en iyi yoldur:

xDF <- data.frame(V1 = c(0, 1, 2, 0, 1), V2 = c(15, 15, 15, 16, 16), V3 = 1:5) 

cevap

14

İşte çok doğrudan bir yaklaşım:

cbind(read.table(text = names(x)), x) 
    V1 V2 x 
0 15 0 15 1 
1 15 1 15 2 
2 15 2 15 3 
0 16 0 16 4 
1 16 1 16 5 

Bu durumda, read.table otomatik names(x) bileşeni bölme ilgilenir (boşluk, varsayılan olarak, ancak gerekirse diğer karakterler belirtilmiş olabilir).

için

yapabilirsiniz ayrıca kümesi adı x doğrudan cbind yılında:

library(splitstackshape) 
cSplit(stack(x), "ind", " ") 
:

cbind(read.table(text = names(x)), V3 = x) 

bir daha doğrudan bir yaklaşım böyle, benim "splitstackshape" paketinden cSplit kullanmak olacaktır

4

Böyle bir şey yapacağını:

res = data.frame(cbind(do.call('rbind', strsplit(names(x), " ")), x)) 
res 
    V1 V2 x 
0 15 0 15 1 
1 15 1 15 2 
2 15 2 15 3 
0 16 0 16 4 
1 16 1 16 5 

Veri türlerinin henüz doğru olmadığını, ilk iki sütunun factor olduğunu unutmayın.