互动,群体数量

时间:2013-03-27 15:30:33

标签: r interaction

从向量中我正在寻找一个函数(快速计算),它返回一个数字介于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中的值相等。 等...

谢谢

2 个答案:

答案 0 :(得分:2)

您可以在某个因素上使用as.numeric()来获取此信息:

a <- c(11,14,11,22,14,22)
as.numeric(factor(a))
# [1] 1 2 1 3 2 3

答案 1 :(得分:0)

这是一个快速制作的功能:

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