r - 操作重复
问题描述
我在 R 中有一个向量,有一些重复:
v <- c(1,1,1,2,2,3)
现在我想要一个替换重复项的函数以获得一系列增加的后缀:
result <- c(1,1.2,1.3,2,2.2,3)
解决方案
使用ave
,您可以为每个重复创建一个序列号:
ave(v, v, FUN = seq_along)
#[1] 1 2 3 1 2 1
将此除以 10 得到
ave(v, v, FUN = seq_along)/10
#[1] 0.1 0.2 0.3 0.1 0.2 0.1
现在添加v
到它
v1 <- v + ave(v, v, FUN = seq_along)/10
v1
#[1] 1.1 1.2 1.3 2.1 2.2 3.1
现在,由于您不想更改每个组的第一个值,您可以这样做:
v1[!duplicated(v)] <- unique(v)
v1
#[1] 1.0 1.2 1.3 2.0 2.2 3.0
推荐阅读
- javascript - Mapbox 有时不加载标记
- c# - 除了多个 if 语句之外,是否有更优雅的方法来为多个被检查的复选框编写逻辑?
- dictionary - 如果键是列表,则在 Dart 映射中搜索键
- python - 使用 python flask 在同一页面中显示结果
- javascript - 调用服务器集线器方法失败
- javascript - 我正在尝试使用一些带有 codeceptjs 的本机 puppeteer 来使用其 ID 查找元素的所有方面
- c - 如何将 32 位打包成 4x8 位?
- c++ - 从源代码构建 UE4 - Mathcalls 语法错误
- sql - plpgsql 函数会产生巨大的性能开销
- php - 如何在 magento 2 phpunit 测试中进行依赖注入