我使用聚合函数来按组计数.如果count> 0,则聚合函数仅返回组的计数.这就是我所拥有的
dt <- data.frame(
n = c(1,2,3,4,5,6),
id = c('A','A','A','B','B','B'),
group = c("x","x","y","x","x","x"))
Run Code Online (Sandbox Code Playgroud)
应用聚合函数
my.count <- aggregate(n ~ id+group, dt, length)
Run Code Online (Sandbox Code Playgroud)
现在看到结果
my.count[order(my.count$id),]
Run Code Online (Sandbox Code Playgroud)
我得到了关注
id group n
1 A x 2
3 A y 1
2 B x 3
Run Code Online (Sandbox Code Playgroud)
我需要以下内容(最后一行为零,我需要)
id group n
1 A x 2
3 A y 1
2 B x 3
4 B y 0
Run Code Online (Sandbox Code Playgroud)
谢谢你提前帮忙
我们可以创建另一个列'ind'然后用于dcast从'long'重新整形为'wide',指定fun.aggregateas length和drop=FALSE.
library(reshape2)
dcast(transform(dt, ind='n'), id+group~ind,
value.var='n', length, drop=FALSE)
# id group n
#1 A x 2
#2 A y 1
#3 B x 3
#4 B y 0
Run Code Online (Sandbox Code Playgroud)
或者是一个base R选项
as.data.frame(table(dt[-1]))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
364 次 |
| 最近记录: |