根据多个变量创建级别

时间:2016-03-11 03:18:27

标签: r levels

我想创建一个名为" Factor"的变量。它基于两个变量:名称和日期。我想在同一天为同一个人分配相同的号码,同时在不同的日子为同一个人分配不同的号码。

例如,

N in [1..n]

我理解如何基于1个变量创建关卡(这是我下面的示例代码中的名称)但是如何扩展代码以便它也需要" day"考虑到创造水平?

// High Level Psuedo Code

var nCr[][]; 
var p[]; // (1+x)^0, (1+x)^1 ... (1+x)^n
var b[]; // (1+x)^0, (1+x)^(n-1),  (1+x)^2(n-2)...
var power[n][i] // (1+x)^i(n-i), power[max_n][x] = b[] actually
var A[] // main problem! 


Precompute nCr[][];  // O(n^2)
Precompute p[];  // O(n lg n)
Precompute b[]; // O(n lg n)

Precompute power[n][i] {
  // O(n^2)
  for all x, for all i
    power[x][i] = power[x+1][i]/p[i]
}

Compute A using all those precompute arrays, O(n^2)

1 个答案:

答案 0 :(得分:2)

作为@A。 Webb提到您可以使用interaction为多个变量创建级别。

as.numeric(interaction(df$Day, df$Name))

#[1] 1 1 2 3 4 4