R - 如何通过匹配原始行的元素来创建长行

时间:2013-11-28 18:12:31

标签: r dataframe

我有一个数据框,测试,定义如下:

id <- c(100, 100, 101, 101, 102, 102)
v1 <- c(1,2,0,0,3,0)
v2 <- c(2,3,5,8,4,1)
test <- data.frame (id, v1, v2)

如何创建一个新的数据框test2,其中我只有三行,由id匹配。每行将包含以下列:id,v1.1,v2.1,v3.1,v1.2,v2.2,v3.2。换句话说,对于每个唯一ID,我将创建一个新行,该行组合了共享此id的旧行。我想知道如何做到这一点。

此外,上述方法旨在找出两个观察值中哪个id为0。我想删除这些。例如,我会删除id为101的两个观察值,因为它们都有0。我会用id 102保留这两个观察结果,因为只有其中一个是0.如果没有上述方法,还有另一种方法吗?

非常感谢和感恩节快乐!

1 个答案:

答案 0 :(得分:1)

我认为你试图以宽幅格式重塑data.frame。

使用aggregate

aggregate(.~id,test,FUN=I)
   id v1.1 v1.2 v2.1 v2.2
1 100    1    2    2    3
2 101    0    0    5    8
3 102    3    0    4    1