2010-12-13 9 views
52

Digamos que tenemos el siguiente cuadro de datos:Obtener índice de la columna de la etiqueta en una trama de datos

> df 
    A B C 
1 1 2 3 
2 4 5 6 
3 7 8 9 

Podemos seleccionar la columna 'B' de su índice:

> df[,2] 
[1] 2 5 8 

¿Hay una manera de obtener el índice (2) de la etiqueta de la columna ('B')?

+2

Véase la respuesta de @ matthewdowle aquí para obtener la mejor solución: http://stackoverflow.com/a/9277935/636656 –

Respuesta

73

puede obtener el índice a través de grep y colnames:

grep("B", colnames(df)) 
[1] 2 

o uso

grep("^B$", colnames(df)) 
[1] 2 

que sólo se les llaman las columnas "B", sin los que contienen un ejemplo B "A B C".

+1

ventajas de su original ejemplo se pudo demostrar en el código si usted mostró su uso en algo así como df [, grep ("^ B", colnames (df))], es decir, devolver las columnas del dataframe comenzando con "B". Siéntase libre de usar en una edición posterior si está de acuerdo. –

+2

O incluso df [, grep ("^ [BC]", colnames (df))], es decir, las columnas que comienzan con B o C. –

+0

@Dwin: Como @aix ya dijo, el asker quiere el índice * *. Pero también suelo usar 'grep' de la forma en que lo describes. – Henrik

66

El siguiente lo hará:

which(colnames(df)=="B") 
+2

El problema con 'grep' también es la ventaja, es decir, que usa expresiones regulares (para que pueda buscar cualquier patrón en sus colnames). Para obtener los nombres "B", use '"^B $ "' como el patrón en grep.^es el metacarácter para el comienzo y $ para el final de una cadena. – Henrik

+6

Ni siquiera necesita 'que'. Puede usar directamente 'df [nombres (df) ==" B "]' – nico

+3

@nico La pregunta es obtener el * índice * de la columna. – NPE

5

quería ver todos los índices de los COLNAMES, ya que tenía que hacer una complicada column rearrangement, por lo que los impresos COLNAMES como una trama de datos. Los nombres de fila son los índices.

as.data.frame(colnames(df)) 

1 A 
2 B 
3 C 
+0

Una forma más concisa de hacer esto es 'cbind (names (df))'. – lillemets

Cuestiones relacionadas