这是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
答案 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