如何计算有序向量中各首次出现值的位置百分占比
解决有序向量中值首次出现位置的百分占比计算问题
可以用以下R代码实现需求,逻辑清晰且贴合示例中的计算规则:
InputVector <- c(1,1,1,1,1,2,2,2,3,3) # 提取每个唯一值的首次出现索引(从1开始计数) first_occurrence_indices <- match(unique(InputVector), InputVector) # 计算百分占比:(首次索引 - 1) / 向量总长度 percentiles <- (first_occurrence_indices - 1) / length(InputVector) # 整理成预期的data.frame格式 result <- data.frame(Value = unique(InputVector), Percentile = percentiles) # 查看结果 result
运行这段代码后,输出结果和你给出的ExpectedResult完全一致:
Value Percentile 1 1 0.0 2 2 0.5 3 3 0.8
关键步骤说明
match(unique(InputVector), InputVector):利用unique()获取有序向量中的唯一值(保持出现顺序),再通过match()找到每个唯一值第一次出现的位置索引。- 百分占比计算:因为示例中以0作为第一个元素的百分位基准,所以用
(首次索引 - 1)得到相对起始位置的偏移量,再除以向量总长度得到占比。
内容的提问来源于stack exchange,提问作者locket
相关产品推荐
相关产品推荐

