好的 - 所以我在R中有一个看起来非常像这样的数据框:
id age v1 v2 ...
12345 31
12345 32
12345 32
我希望能够查看此DF中的所有ID,并将映射到特定age
的{{1}}的所有值设置为第一个(或者最低,在这种情况下,作为DF如何排序的结果)ID
的值对应于age
。所以上面的例子将成为
ID
我有一种感觉,这可以通过plyr(或类似的)来完成,虽然我的大脑现在已经被炒了,但我意识到也许这可能不是最好的方法,也不是最直接的。有什么建议? TIA。
答案 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