猿问

每组计数观察/行数,并将结果添加到数据帧中

每组计数观察/行数,并将结果添加到数据帧中

说我有一个data.frame目的:

df <- data.frame(name=c('black','black','black','red','red'),
                 type=c('chair','chair','sofa','sofa','plate'),
                 num=c(4,5,12,4,3))

现在,我要计算每个组合的观察次数。nametype..可以这样做:

table(df[ , c("name","type")])

也有可能plyr(虽然我不知道该怎么做)。

但是,如何将结果合并到原始数据框架中呢?所以结果会是这样的:

df#    name  type num count# 1 black chair   4     2# 2 black chair   5     2# 3 black  sofa  12     1
# 4   red  sofa   4     1# 5   red plate   3     1

哪里count现在存储聚合的结果。

解决方案plyr学习也可能很有趣,不过我想看看这是如何用R基完成的。


HUX布斯
浏览 538回答 3
3回答

互换的青春

你可以用ave:df$count&nbsp;<-&nbsp;ave(df$num,&nbsp;df[,c("name","type")],&nbsp;FUN=length)

桃花长相依

你可以这样做:>&nbsp;ddply(df,.(name,type),transform,count&nbsp;=&nbsp;NROW(piece)) &nbsp;&nbsp;&nbsp;name&nbsp;&nbsp;type&nbsp;num&nbsp;count1&nbsp;black&nbsp;chair&nbsp;&nbsp;&nbsp;4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;22&nbsp;black&nbsp;chair&nbsp;&nbsp;&nbsp;5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;23&nbsp;black&nbsp;&nbsp;sofa&nbsp;&nbsp;12&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;14&nbsp;&nbsp;&nbsp;red&nbsp;plate&nbsp;&nbsp;&nbsp;3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;15&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;red&nbsp;&nbsp;sofa&nbsp;&nbsp;&nbsp;4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1或者更直观地说,>&nbsp;ddply(df,.(name,type),transform,count&nbsp;=&nbsp;length(num)) &nbsp;&nbsp;&nbsp;name&nbsp;&nbsp;type&nbsp;num&nbsp;count1&nbsp;black&nbsp;chair&nbsp;&nbsp;&nbsp;4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;22&nbsp;black&nbsp;chair&nbsp;&nbsp;&nbsp;5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;23&nbsp;black&nbsp;&nbsp;sofa&nbsp;&nbsp;12&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;14&nbsp;&nbsp;&nbsp;red&nbsp;plate&nbsp;&nbsp;&nbsp;3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;15&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;red&nbsp;&nbsp;sofa&nbsp;&nbsp;&nbsp;4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1
随时随地看视频慕课网APP
我要回答