Pregunta

Tengo un hoja.de.datos con encabezados de columna.

¿Cómo puedo obtener una fila específica de la hoja.de.datos como una lista (con los títulos de las columnas como claves en la lista)?

En concreto, mi hoja.de.datos es

      A    B    C
    1 5    4.25 4.5
    2 3.5  4    2.5
    3 3.25 4    4
    4 4.25 4.5  2.25
    5 1.5  4.5  3

Y quiero conseguir una fila que es el equivalente a

> c(a=5, b=4.25, c=4.5)
  a   b   c 
5.0 4.25 4.5 
¿Fue útil?

Solución

x[r,]

donde r es la fila que está interesado en la Prueba de esto, por ejemplo:.

#Add your data
x <- structure(list(A = c(5,    3.5, 3.25, 4.25,  1.5 ), 
                    B = c(4.25, 4,   4,    4.5,   4.5 ),
                    C = c(4.5,  2.5, 4,    2.25,  3   )
               ),
               .Names    = c("A", "B", "C"),
               class     = "data.frame",
               row.names = c(NA, -5L)
     )

#The vector your result should match
y<-c(A=5, B=4.25, C=4.5)

#Test that the items in the row match the vector you wanted
x[1,]==y

Este página (de este sitio útil ) tiene buena información sobre la indexación como esto

.

Otros consejos

indexación es muy lógico R-ish. Proveedores:

 x[ x$A ==5 & x$B==4.25 & x$C==4.5 , ] 

O:

subset( x, A ==5 & B==4.25 & C==4.5 )

Probar:

> d <- data.frame(a=1:3, b=4:6, c=7:9)

> d
  a b c
1 1 4 7
2 2 5 8
3 3 6 9

> d[1, ]
  a b c
1 1 4 7

> d[1, ]['a']
  a
1 1

Si usted no sabe el número de fila, pero lo hace saber algunos valores, puede utilizar subconjunto

x <- structure(list(A = c(5,    3.5, 3.25, 4.25,  1.5 ), 
                    B = c(4.25, 4,   4,    4.5,   4.5 ),
                    C = c(4.5,  2.5, 4,    2.25,  3   )
               ),
               .Names    = c("A", "B", "C"),
               class     = "data.frame",
               row.names = c(NA, -5L)
     )

subset(x, A ==5 & B==4.25 & C==4.5)
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top