我的问题是:我有一个包含一些因子变量的数据框。我现在想为这个数据框分配一个新向量,它为这些因子变量的每个子集创建一个索引。
data <-data.frame(fac1=factor(rep(1:2,5)), fac2=sample(letters[1:3],10,rep=T))
给了我类似的东西:
fac1 fac2
1 1 a
2 2 c
3 1 b
4 2 a
5 1 c
6 2 b
7 1 a
8 2 a
9 1 b
10 2 c
我想要的是一个组合计数器,它计算每个因素组合的出现。像这样
fac1 fac2 counter
1 1 a 1
2 2 c 1
3 1 b 1
4 2 a 1
5 1 c 1
6 2 b 1
7 1 a 2
8 2 a 2
9 1 b 2
10 1 a 3
到目前为止,我考虑过使用 tapply 来获取所有因子组合的计数器,效果很好
counter <-tapply(data$fac1, list(data$fac1,data$fac2), function(x) 1:length(x))
但我不知道如何在不使用低效循环的情况下将计数器列表(例如未列出)分配给数据帧中的组合:)