2012-04-12 2 views
5

세 개의 식별자가있는 큰 데이터 프레임이 있습니다. 예를 들어이 같은 데이터 프레임을 생성합니다 여러 데이터 프레임 항목에 고유 한 식별자를 할당하는 방법

df <- data.frame(year=c(1999,1999,2000,2000,2000), country=c('K','K','M','M','S'), 
       site=c('di','se','di','di','di')) 

:

year country site 
    1999 K  di 
    1999 K  se 
    2000 M  di 
    2000 M  di 
    2000 S  di 

내가 데이터 프레임에 추가 열을 추가하고 항목에 대한 사용하여 할당 된 '고유 ID'를 갖고 싶어 '연도', '국가'및 '사이트'. 다음과 같이 보일 것입니다 :

year country site unique_id 
    1999 K  di  1 
    1999 K  se  2 
    2000 M  di  3 
    2000 M  di  3 
    2000 S  di  4 

이 작업을 수행하는 방법에 대한 제안은 크게 감사하겠습니다. 나는 어떻게 든 플라이어 꾸러미를 사용하여 할 수있을 것이라고 생각하고 있습니까?

답변

7

아주 잘 작동합니다. 고유 한 레벨의 요소가 실제로 각각 정수로 저장되고 as.numeric()을 사용하여 정수 값에 액세스/추출한다는 사실을 이용합니다.

df$unique_id <- 
    as.numeric(as.factor(with(df, paste(year, country, site, sep="_")))) 
df 
# year country site unique_id 
# 1 1999  K di   1 
# 2 1999  K se   2 
# 3 2000  M di   3 
# 4 2000  M di   3 
# 5 2000  S di   4 
+0

감사처럼 할 것,이 답변의 모두 잘했다. 매우 감사. – Austin

+5

아마'transform (df, unique_id = as.integer (상호 작용 (연도, 국가, 사이트, drop, TRUE))))') 대신 – baptiste

+1

@baptiste - Sweet. 그보다 훨씬 좋았고,'interaction = '에 대한'drop = TRUE' 인수에 대해 배우게되어 기쁩니다. –

1

내가이

lookup <- data.frame(id=1:length(unique(apply(df, 1, paste, collapse=""))), key=unique(apply(df, 1, paste, collapse=""))) 

df$id <- apply(df, 1, function(x) lookup[lookup$key==paste(x, collapse=""), "id"]) 
관련 문제