从data.frame分配唯一变量

时间:2015-05-19 10:41:20

标签: r function functional-programming unique identity-column

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

获取数据:

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

2 个答案:

答案 0 :(得分:2)

此:

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

会给你想要的结果:

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

通过将as.factor包裹在as.numeric中,它会开始使用1计算因子级别,依此类推。

答案 1 :(得分:2)

或者您可以使用match

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

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

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