我需要计算巨大矩阵中每个因子级别的变量类别数。我尝试在下面的脚本中使用ddply,但它不起作用,我无法弄清楚为什么。
这是我的代码带有示例数据帧:
a<-as.factor(c(1,1,1,2,2,2,3,3,3))
b<-as.factor(c(1,1,1,2,2,3,1,2,3))
df=data.frame(a=a,b=b)
records=ddply(df, .(a),
summarise,
categories=length(levels(b))
)
records
应该给出:
a categories
1 1 1
2 2 2
3 3 3
有人有提示吗?它让我完全卡住.. 谢谢! Agus的
答案 0 :(得分:0)
当您对因子进行子集时,因子的级别不会改变。级别表示因子可能采用的可能值,而不是它所执行的值集。所以你可以用
替换你的代码records=ddply(df, .(a),
summarise,
categories=length(levels(droplevels(b)))
)
甚至
records=ddply(df, .(a),
summarise,
categories=length(unique(b))
)
其中任何一个都给出了
> records
a categories
1 1 1
2 2 2
3 3 3