2015-06-04 3 views
0

У меня есть вектор в кадре данных, который я хочу разделить на множество векторов-столбцов следующим образом:Нарезка вектор в dataframe в колонке векторы

region<- c("US","India", "France", "Greece") 
id<- c(1, 2,3,4) 
df1<- data.frame(region,id) 

Я хочу разделить кадр данных следующим образом:

region.US region.India region.France region.Greece id 
    1   0    0   0   1 
    0   1    0   0   2 
    0   0    1   0   3 
    0   0    0   1   4 

Любые предложения о том, как это сделать?

ответ

1

Попробуйте это, даже если это не совсем то, что вы хотите.

t(table(df1)) 
    region 
id France Greece India US 
    1  0  0  0 1 
    2  0  0  1 0 
    3  1  0  0 0 
    4  0  1  0 0 
1

Это почти работает (порядок столбцов не совпадает, а имен столбцов не разделенные точек):

df1 <- data.frame(region=c("US","India", "France", "Greece"), 
       id=1:4) 
data.frame(model.matrix(~region-1,df1),id=df1$id) 
2

Чтобы получить именно этот результат:

cbind(setNames(as.data.frame(diag(nrow(df1))), paste0("region.", df1$region)), 
     df1[,"id", drop=FALSE]) 
# region.US region.India region.France region.Greece id 
# 1   1   0    0    0 1 
# 2   0   1    0    0 2 
# 3   0   0    1    0 3 
# 4   0   0    0    1 4 
Смежные вопросы