문제

(아마도) 비 유니 키 스트링의 열을 독특한 문자열의 열로 만들고 싶습니다.

예를 들어, 고려하십시오.

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