在R中将多行数据转换为单行

时间:2015-12-03 15:29:35

标签: r

我有相同的数据集,但有886,120行(34个ID,每个ID有22,271行)要转换为34行,22,271列。

Raw  ID(34)  Values(22,271 for each ID)

1   AND 0.08333
2   BEL 0.08333
3   ARR 0.2292
4   AND 0.3056
5   AND 0.3056
6   BEL 0.3333
7   AKT 0.3421
8   BEL 0.3667
9   AKTK 0.3684
10  ARR 0.4583
11  ARR 0.4583
12  AKTK 0.7105
...
886120  ARR 0.2152

===========================================
To be convert with the following format:
===========================================
ID     Value1   Value2   Value3   ... Value22,721

AKTK    0.7105  0.3421  0.3684  
AND 0.3056  0.3056  0.08333 
ARR 0.4583  0.4583  0.2292  
BEL 0.3333  0.3667  0.08333 

有人能帮助我吗?

1 个答案:

答案 0 :(得分:1)

如果您的数据框按ID排序,则可以使用。您添加一列描述应该在结果列中一起出现的值组,然后这可以工作:

df <- data.frame(ID=rep(LETTERS,100),
                valueID=rep(1:100,each=26),
                values=rnorm(2600))
library(reshape2)
df2 <- dcast(df,ID~valueID)

所以也许你可以做到

oo <- order(your.df$ID)
df <- cbind(your.df[oo,],valueID=paste0('value',rep(1:22721,each=34)))

然后做我上面做的。 @ akrun的data.table解决方案也有效,因为N和ID一起指定了一个唯一的单元格,所以意味着不做任何贡献。但在这两种情况下,您都需要先排序。