0

ベクトル a から、1 からベクトル a のレベル数までの範囲の数値を持つベクトルを返し、どの値が等しいかを示す関数 (計算が速い) を探しています。

for ループでこれを行う方法は知っていますが、実行が少し遅いです。

a=vector(11,14,11,22,14,22)

levels(as.factor(a))==3

解決

 b=vector(1,2,1,3,2,3)

つまり、位置 1 と 3 (b の数字 1) では、a の値が等しいことを意味します。2 と 5 の位置 (b の数字 2) では、a の値は同じです。等...

ありがとうございました

4

2 に答える 2

2

as.numeric()これを取得するために要因で 使用できます。

a <- c(11,14,11,22,14,22)
as.numeric(factor(a))
# [1] 1 2 1 3 2 3
于 2013-03-27T15:34:02.957 に答える
0

これは、すぐに作成された関数の 1 つです。

numberfun <- function(x){y <- unique(x)
                         match(x,y)}

a <- c(11,14,11,22,14,22)
numberfun(a)
#[1] 1 2 1 3 2 3

a <- c(99,99,22,22,44,22,99)
numberfun(a)
#[1] 1 1 2 2 3 2 1
于 2013-03-27T15:59:10.300 に答える