R:向量中的编号元素

Mar*_*ler 3 r

我想对矢量的元素进行编号,将"1"分配给矢量中的最小元素.我知道怎么做,但我的解决方案(下面包含的代码)似乎过于复杂.有一个更简单的解决方案吗?

在下面的示例中,向量"数据"中有5个唯一的数字.数字3是最小的,应该分配数字'1'; 数字100是最大的,应该分配数字'5'.

矢量'数据'的理想解决方案是:c(2,3,4,4,3,1,5).

data <- c(5,8,12,12,8,3,100)
unique.numbers <- sort(unique(data))
numbering <- seq(1:length(unique(data)))
template <- cbind(numbering,unique.numbers)
output <- rep(NA, length(data))
for(i in 1:length(data)) { 
  for(j in 1:dim(template)[1]) { 
      if(data[i]==template[j,2]) output[i]=j 
  }
}
output
Run Code Online (Sandbox Code Playgroud)

谢谢你的任何建议.我正在尝试通过编程提高效率.

马克米勒

Woj*_*ala 8

更紧凑的程序版本.

dat <- c(5,8,12,12,8,3,100)
dat_sorted <- sort(unique(dat))
match(dat,dat_sorted)
Run Code Online (Sandbox Code Playgroud)