从 data.frame 分配唯一变量

Assigning unique variable from a data.frame

这是一个与类似的问题,但我的输出结果不同。

取数据:

example <- data.frame(var1 = c(2,3,3,2,4,5), 
                  var2 = c(2,3,5,4,2,5), 
                  var3 = c(3,3,4,3,4,5))

现在我想创建 example$Identity,它为每个唯一的 var1 值

从 1:x 中获取一个值

我用过

example$Identity <- apply(example[,1], 2, function(x)(unique(x)))

但是我不熟悉正确的格式function()

example$Identity的输出应该是1,2,2,1,3,4

这个:

example$Identity <- as.numeric(as.factor(example$var1))

会给你想要的结果:

> example$Identity
[1] 1 2 2 1 3 4

通过将 as.factor 包裹在 as.numeric 中,它开始使用 1 等计算因子水平。

或者您可以使用 match

example$Identity <- with(example, match(var1, unique(var1)))

如果值按向量排序,也可以使用findInterval

findInterval(example$var1, unique(example$var1))
#[1] 1 2 2 1 3 4