使用ddply进行子集处理



我知道这应该很简单,但我在使用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——我可以在一行代码中完成吗?

抱歉我的无知,并提前感谢您的帮助!

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

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

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

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

这对我有效:

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

最新更新