2016-03-05 143 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中的線程,只是不知道是否有任何整潔的方式在做R'非常感謝!

+0

你不應該指定'T';它經常被用作'TRUE'的別名。 – 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