-1

次のタイプのデータがあるとします。

df <- data.frame(student = c("S1", "S2", "S3", "S4", "S5", "S2", "S6", "S1", "S7", "S8"), 
              factor = c("A", "A", "A", "A", "A", "B", "B", "C", "C", "D"), 
              year =  c(1, 1, 1, 1, 1, 1, 1, 2, 2, 2), 
              count1 = c(0, 1, 0, 0, 0, 1, 0, 0, 0, 0), 
              count2 = c(1, 0, 0, 0, 0, 0, 0, 1, 0, 0))

特定の年の学生とクラスの 2 つの列を分析するには、典型的な apply() 関数よりも効率的な方法が必要です。学生が特定の学年で同じ因子水準を維持している場合、関数はカウント 0 を返します。学生が特定の年に複数の要因レベルにある場合、カウントは、別の要因レベルの学生のインスタンスごとに i+1 更新されます。

何年にもわたってデータセット内の学生を分析するために、別のカウント/機能が必要です。たとえば、何年にもわたって同じ因子レベルを維持している学生は、カウント 0 を受け取ります。学生が別の年に別の因子レベルを持つことが判明した場合、カウントはインスタンスごとに i+1 で更新されます。

10,000 件以上の観測があるため、*apply の試みは非生産的でした。つまり、各学生と要因の一意のインスタンスを数えることができましたが、学生 (一意の ID) と要因のすべての一意のインスタンスではなく、最初の一意のインスタンスのみを数えることができました。個人は、数年以内または数年にわたって繰り返される可能性があります。

理想的な出力は次のとおりです。

Student1,Factor.Count(年内),Factor.Count(年内)

4

1 に答える 1