如何在R语言中生成数值向量的位置映射向量?
R向量数值连续化(保留元素顺序)
给定存在数值间隔的向量:
vec <- c(3,1,7,3,5,7)
我们需要将其转换为1到不同取值数量的连续序列,同时保留原向量元素的位置顺序,预期结果为2 1 4 2 3 4。
以下是两种简单有效的实现方法:
方法一:利用因子(factor)转换
通过将向量转为因子并指定水平为元素首次出现的顺序,再转回数值即可:
vec <- c(3,1,7,3,5,7) # 按元素首次出现顺序创建因子 vec_factor <- factor(vec, levels = unique(vec)) # 转换为连续数值序列 result <- as.numeric(vec_factor) print(result)
执行后输出:
[1] 2 1 4 2 3 4
方法二:使用match()结合unique()
先提取向量中唯一元素的首次出现顺序,再匹配每个元素在该序列中的位置:
vec <- c(3,1,7,3,5,7) # 获取唯一元素的首次出现序列 unique_vals <- unique(vec) # 匹配每个元素的位置索引 result <- match(vec, unique_vals) print(result)
同样得到预期结果:
[1] 2 1 4 2 3 4
内容的提问来源于stack exchange,提问作者Snoop Dogg
相关产品推荐
相关产品推荐

