使用ddply进行分组

时间:2012-01-27 11:26:54

标签: r

我知道这应该是直截了当的,但我在使用ddply分割数据框时遇到了问题。

ID = c(1,1,1,2,2,2,2,3,4,4,4,4)
date = c("4th Nov","4th Nov","5th Nov","5th Nov","6th Nov","7th Nov","7th Nov","8th Nov","6th Nov","6th Nov","7th Nov","7th Nov")
df<-data.frame(ID,date)

我想要的只是计算出我在一个非常大的数据集中拥有的唯一ID的数量(所以在上面的例子中我只得到4)。我的真实数据集中的数字不是连续的,所以我不能算出最大值。

我一直试图让代码分割数据帧,因此每个唯一ID只会在新数据帧中包含一次,然后我希望只计算行数来给我总数。也许我甚至不需要ddply - 我可以在一行代码中执行此操作吗?

对不起我的无知,并提前感谢你的帮助!

3 个答案:

答案 0 :(得分:4)

最快捷,最简单的方法是在您的ID向量上使用lengthunique

> length(unique(df$ID))
[1] 4

答案 1 :(得分:0)

这里你不需要ddply,但这里有ddply的解决方案:

nrow(ddply(df,.(ID),head,1))

答案 2 :(得分:0)

这对我有用:

records=ddply(
              df, .(date),
              summarise,
              days=length(unique(ID))              
              )