2012-02-15 33 views
5

Ho dati longitudinali in un formato lungo. Voglio creare una variabile ID basata sulla colonna variabile che identifica ogni osservazione dei miei dati. Come faccio a farlo in R?Come creare la colonna ID in R

Esempio: io ho questi dati

name year var1 var2 
A 1 4 3 
A 2 5 1 
A 3 4 2 
B 1 . . 
B 2 4 3 
B 3 5 1 

voglio produrre una nuova colonna chiamata 'id' con un numero unico per ogni nome, come ad esempio:

name id year var1 var2 
A 1 1 4 3 
A 1 2 5 1 
A 1 3 4 2 
B 2 1 . . 
B 2 2 4 3 
B 2 3 5 1 

Qualsiasi aiuto?

risposta

4

Se la colonna name non solo contiene le singole lettere (o anche se lo fa), è possibile utilizzare:

dat$id <- as.numeric(as.factor(dat$name)) 

o, più semplicemente :

dat$id <- c(as.factor(dat$name)) 

dove dat è il vostro data.frame.

1
tc=' 
name year var1 var2 
A 1 4 3 
A 2 5 1 
A 3 4 2 
B 1 . . 
B 2 4 3 
B 3 5 1' 

df <- read.table(text=tc, header=T) 

df$ID <- match(df$name, LETTERS) 

Anche se non è chiaro se il nome è una colonna o sono i nomi dei nomi del frame di dati. Se non è una colonna quindi provare rownames(df) invece di df$name

+0

Penso che 'text = tc' debba essere sostituito con' textConnection (tc) '. – jbaums

+0

@jbaums sicuramente perché no. – aatrujillob

+0

@jbaums 'text' è un nuovo argomento per read.table, che aiuta a evitare' textConnection'. Taglia fuori l'uomo medio, se vuoi. –

Problemi correlati