2016-03-05 146 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