我的問題是:我有一個數據框與一些因子變量。我現在想要爲這個數據框分配一個新的向量,爲這些因子變量的每個子集創建一個索引。如何將計數器分配給由因子組合定義的data.frame的特定子集?
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))
但我不知道我怎麼可以指定櫃檯列表(例如未列出)到數據幀中的組合,而不使用低效的循環:)
是否需要在訂單或你只是想淨計數?如果你只是想計數,表格(粘貼(數據$ fac1,數據$ fac2,sep =「 - 」))可能會有所幫助。 – screechOwl
嗨!在每個fac1×fac2組合中,順序很重要。 (人們可以把它看作一個人「fac1」看到字母「fac2」的次數) – JBJ
你可以使用相同的基本策略,但是從** plyr **開始從'tapply'切換到'ddply',或者如果你的數據是巨大的,性能是一個問題,'data.table'。 – joran