如何在R中有条件地向向量追加递增后缀
在R中有一个字符向量,其值重复出现:如何在R中有条件地向向量追加递增后缀,r,vector,append,increment,R,Vector,Append,Increment,在R中有一个字符向量,其值重复出现: vec <- c('22','22','22','45','45','45','56','67','67','67','89','90') vec我们可以使用ave获得按“vec”分组的序列,然后将其与原始向量粘贴在一起 res <- paste(vec, ave(vec, vec, FUN=seq_along), sep="_") 或者我们可以使用make.unique make.unique(vec, sep="_") #[1]
vec <- c('22','22','22','45','45','45','56','67','67','67','89','90')
vec我们可以使用ave
获得按“vec”分组的序列,然后将其与原始向量粘贴在一起
res <- paste(vec, ave(vec, vec, FUN=seq_along), sep="_")
或者我们可以使用make.unique
make.unique(vec, sep="_")
#[1] "22" "22_1" "22_2" "45" "45_1" "45_2" "56" "67" "67_1" "67_2"
#[11] "89" "90"
tbl <- table(vec)
names(tbl)[tbl==1]
i1 <- vec %in% names(tbl)[tbl==1]
res[i1] <- sub('_.*', '', res[i1])
res
#[1] "22_1" "22_2" "22_3" "45_1" "45_2" "45_3" "56" "67_1" "67_2" "67_3"
#[11] "89" "90"
make.unique(vec, sep="_")
#[1] "22" "22_1" "22_2" "45" "45_1" "45_2" "56" "67" "67_1" "67_2"
#[11] "89" "90"