tabla - seleccionar filas en r
¿Cómo puedo ordenar un data.frame con solo una columna, sin perder nombres de fila? (1)
data = c(1,2,3,4)
names = c("foo", "bar", "baz", "yak")
d = data.frame(data, row.names=names)
Esto devuelve:
data
foo 1
bar 2
baz 3
yak 4
Ahora, me gustaría ordenar este dataframe por la columna, sin perder los nombres de las filas adjuntas. Entonces, mi resultado sería:
data
yak 4
baz 3
bar 2
foo 1
Ya he intentado lo siguiente:
d[order(-d$data),]
, que por supuesto solo me da la lista unidimensional.arrange(d, desc(data))
desde el paqueteplyr
, que elimina los nombres de las filas.Descubre el orden con
o = order(-d$data)
, luego reconstruye el marco condata.frame(d[o,], row.names=rownames(d)[o])
... que aún me deja el nombre de columna equivocado.
¿Hay alguna forma sensata de hacer esto?
Estuviste cerca con tu primer intento, simplemente te olvidaste de usar drop = FALSE
:
> d[order(-d$data), , drop = FALSE]
data
yak 4
baz 3
bar 2
foo 1