R - Сделайте уникальные строки в рамке данных

StackOverflow https://stackoverflow.com/questions/20353173

  •  25-08-2022
  •  | 
  •  

Вопрос

Я хотел бы превратить колонку из (возможно) не-юнических строк в колонку уникальных струн.

Например, рассмотрим:

df <- data.frame(
     'Initials' = c("AA","AB","AB")
     , 'Data' = c(1,2,3)
 )
df
  Initials Data
1       AA    1
2       AB    2
3       AB    3

Я хотел бы получить это:

  Initials Data    
1       AA        1
2       AB (1)    2
3       AB (2)    3

Спасибо!

Примечание: я знаю, что могу использовать Rownames, чтобы уникально идентифицировать строку, но я хотел бы сохранить строку, хранящуюся в столбце инициалов, с добавлением числа.

Это было полезно?

Решение

transform(df, Initials = ave(as.character(Initials), Initials, 
       FUN = function(x) if (length(x) > 1) paste0(x, " (", seq(x), ")") else x))

#   Initials Data
# 1       AA    1
# 2   AB (1)    2
# 3   AB (2)    3

Другие советы

w <- ave(df$Data, df$Initials, FUN = seq_along )
> df$Initials <- paste(df$Initials, "(", w, ")", sep = "")
# > df
#   Initials Data
# 1    AA(1)    1
# 2    AB(1)    2
# 3    AB(2)    3
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top