2012-02-15 101 views
5

Tengo datos longitudinales en un formato largo. Quiero crear una variable de ID basada en la variable-columna que identifica cada observación de mis datos. ¿Cómo hago eso en R?Cómo crear una columna ID en R

Ejemplo: Tengo estos datos

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 

quiero producir una nueva columna llamada 'id' con un número único para cada nombre, como por ejemplo:

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 

Cualquier ayuda?

Respuesta

4

Si su columna name no sólo contiene una sola letra (o incluso si lo hace), puede utilizar:

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

o, más simplemente :

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

donde dat es su 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) 

Aunque no está claro si el nombre es una columna o son los nombres de fila del marco de datos. Si no es una columna a continuación, tratar rownames(df) en lugar de df$name

+0

Creo que 'text = tc' debe reemplazarse por' textConnection (tc) '. – jbaums

+0

@jbaums seguro por qué no. – aatrujillob

+0

@jbaums 'text' es un nuevo argumento para read.table, que ayuda a evitar' textConnection'. Corta al intermediario, si quieres. –

Cuestiones relacionadas