2016-03-05 3 views
-1

У меня есть набор данных, как указано ниже, в котором каждый ID имеет несколько строк для разных атрибутов.Переместить несколько столбцов в строки в R

ID<-c(1,1, 2,2,3,3) 
Score<-c(4,5, 5,7,8,9) 
Attribute<-c("Att_1","Att_2", "Att_1","Att_2", "Att_1","Att_2") 
T<-data.frame(ID, Score, Attribute) 

Нужно преобразовать его в следующем формате, так что каждый ID имеет один ряд:

ID Att_1 Att_2 
1 4  5 
2 5  7 
3 8  9 

Есть темы, о том, как сделать это в Excel, просто интересно, есть ли аккуратный способ сделать в Р? Большое спасибо!

+0

Вы никогда не должны назначить 'T'; он часто используется как псевдоним для «ИСТИНА». – bgoldst

ответ

1

Это может быть сделано с reshape():

reshape(data.frame(ID,Score,Attribute),idvar='ID',timevar='Attribute',dir='w'); 
## ID Score.Att_1 Score.Att_2 
## 1 1   4   5 
## 3 2   5   7 
## 5 3   8   9 
1

Вы можете попробовать это:

library(reshape2) 
dcast(T, ID ~ Attribute, value.var="Score") 
# ID Att_1 Att_2 
#1 1  4  5 
#2 2  5  7 
#3 3  8  9 
Смежные вопросы