如何在R中为数据表内的重复值按出现顺序标注出现序号
R标注姓名出现次序实现方法
你需要给名为People的数据集的全名列旁新增重复次序列,多次出现的姓名按出现顺序标注1、2、3……,仅出现一次的姓名对应次序列留空,可通过以下两种常用方法实现:
方法1:基础R实现
无需安装额外依赖,直接运行以下代码即可:
# 按全名列分组计算组内次序,仅出现1次的返回空值 People$`Number of repetition` <- ave(rep(1, nrow(People)), People$`Full name`, FUN = function(x) { if(length(x) == 1) return(NA) seq_along(x) }) # 将NA转换为空白,匹配示例输出效果 People$`Number of repetition`[is.na(People$`Number of repetition`)] <- ""
方法2:dplyr实现(tidyverse生态)
写法更简洁易读,适合日常数据处理场景:
library(dplyr) People <- People %>% # 按全名列分组 group_by(`Full name`) %>% # 组内行数为1时填空,否则填组内出现次序 mutate(`Number of repetition` = ifelse(n() == 1, "", row_number())) %>% # 取消分组,避免后续操作受分组影响 ungroup()
注意:如果你的全名列实际列名不是
Full name,请将代码中对应字段替换为你的实际列名。
运行上述任意代码后,输出的数据集结构和你给出的示例效果完全一致。
内容的提问来源于stack exchange,提问作者Teena
相关产品推荐
相关产品推荐

