使映射到某个ID的变量值均匀

时间:2011-10-24 04:11:58

标签: r

好的 - 所以我在R中有一个看起来非常像这样的数据框:

  id  age v1 v2 ...
12345  31  
12345  32  
12345  32  

我希望能够查看此DF中的所有ID,并将映射到特定age的{​​{1}}的所有值设置为第一个(或者最低,在这种情况下,作为DF如何排序的结果)ID的值对应于age。所以上面的例子将成为

ID

我有一种感觉,这可以通过plyr(或类似的)来完成,虽然我的大脑现在已经被炒了,但我意识到也许这可能不是最好的方法,也不是最直接的。有什么建议? TIA。

2 个答案:

答案 0 :(得分:4)

这是“第一次”,虽然你可能想要“最低”。

ave(dat$age, dat$id, FUN=function(x) head(x, 1))
[1] 31 31 31
dat$age <- ave(dat$age, dat$id, FUN=function(x) head(x, 1))

答案 1 :(得分:3)

你说得对,普莱尔会完成工作。

  > dt
      id age
    1  1  20
    2  1  21
    3  2  25
    4  2  26
    > ddply(dt, .(id), transform, age = min(age))
      id age
    1  1  20
    2  1  20
    3  2  25
    4  2  25