r - 如何通过使用 dplyr 在 R 中附加索引来替换重复的行值?
问题描述
我想通过在给定列中添加下划线来替换给定列中的重复行值,方法是根据它们的发生率附加一个索引。例如
old_df_col new_df_col
object object_1
object object_2
object object_3
object object_4
大多数其他问题都集中在使用 NA 删除或替换重复值,因此我无法使用R
and找到实现dplyr
。
这是我到目前为止所做的
# count duplicates
mtcars %>% group_by(carb) %>% summarize(n=n())
# filter duplicates
mtcars %>% group_by(carb) %>% filter(n()>1)
解决方案
您可以按目标变量分组并用于row_number()
创建序列。
显然,您可能必须事先对数据集进行排序(使用arrange()
),以便该序列对您的数据具有一定的意义,但并非绝对必要。
library(dplyr)
mtcars %>% group_by(carb) %>%
arrange(carb, cyl, mpg, hp) %>%
mutate(
carb_seq = paste("carb", carb, "seq", row_number(), sep = "_")
)
# A tibble: 32 x 12
# Groups: carb [6]
mpg cyl disp hp drat wt qsec vs am gear carb carb_seq
<dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <chr>
1 21.5 4 120. 97 3.7 2.46 20.0 1 0 3 1 carb_1_seq_1
2 22.8 4 108 93 3.85 2.32 18.6 1 1 4 1 carb_1_seq_2
3 27.3 4 79 66 4.08 1.94 18.9 1 1 4 1 carb_1_seq_3
4 32.4 4 78.7 66 4.08 2.2 19.5 1 1 4 1 carb_1_seq_4
5 33.9 4 71.1 65 4.22 1.84 19.9 1 1 4 1 carb_1_seq_5
6 18.1 6 225 105 2.76 3.46 20.2 1 0 3 1 carb_1_seq_6
7 21.4 6 258 110 3.08 3.22 19.4 1 0 3 1 carb_1_seq_7
8 21.4 4 121 109 4.11 2.78 18.6 1 1 4 2 carb_2_seq_1
9 22.8 4 141. 95 3.92 3.15 22.9 1 0 4 2 carb_2_seq_2
10 24.4 4 147. 62 3.69 3.19 20 1 0 4 2 carb_2_seq_3
# … with 22 more rows
由reprex 包于 2021-07-11 创建 (v2.0.0 )
推荐阅读
- java - java - 无法使用套接字运行程序(无法连接和侦听失败)
- python - 为 argparse 参数中的路径展开用户
- arrays - 如何在 Wordpress 中获取一系列自定义类别?
- node.js - Docker - 从主机访问容器内的文件
- perl - urxvt:在当前文件夹中打开图形文件资源管理器
- angular - 当我使用 Angular 使用 find() 找到这个 id 时如何保存 id_product
- c++ - TensorRT context.enqueue 为除第一帧以外的所有帧提供错误结果
- styled-components - 样式不适用于使用 style(StyledComponent) 语法的样式化组件
- c# - ASP.NET Core 2.1 如何调用引用类的过滤器
- php - “未捕获的 SoapFault 异常:[WSDL] SOAP-ERROR:WSDL 解析:无法加载”使用 ZEND SOAP 客户端