我知道这应该是直截了当的,但我在使用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 - 我可以在一行代码中执行此操作吗?
对不起我的无知,并提前感谢你的帮助!
答案 0 :(得分:4)
最快捷,最简单的方法是在您的ID向量上使用length
和unique
:
> 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))
)