Tengo una tabla en R que tiene str()de esto:
table [1:3, 1:4] 0.166 0.319 0.457 0.261 0.248 ...
- attr(*, "dimnames")=List of 2
..$ x: chr [1:3] "Metro >=1 million" "Metro <1 million" "Non-Metro Counties"
..$ y: chr [1:4] "q1" "q2" "q3" "q4"
Y se ve así cuando lo imprimo:
y
x q1 q2 q3 q4
Metro >=1 million 0.1663567 0.2612212 0.2670441 0.3053781
Metro <1 million 0.3192857 0.2480012 0.2341030 0.1986102
Non-Metro Counties 0.4570341 0.2044960 0.2121102 0.1263597
Quiero deshacerse de la xe yy la convierten en una trama de datos que se ve exactamente igual que el anterior (tres filas, cuatro columnas), pero sin la xo y. Si uso as.data.frame(mytable), en cambio obtengo esto:
x y Freq
1 Metro >=1 million q1 0.1663567
2 Metro <1 million q1 0.3192857
3 Non-Metro Counties q1 0.4570341
4 Metro >=1 million q2 0.2612212
5 Metro <1 million q2 0.2480012
6 Non-Metro Counties q2 0.2044960
7 Metro >=1 million q3 0.2670441
8 Metro <1 million q3 0.2341030
9 Non-Metro Counties q3 0.2121102
10 Metro >=1 million q4 0.3053781
11 Metro <1 million q4 0.1986102
12 Non-Metro Counties q4 0.1263597
Probablemente no entiendo fundamentalmente cómo se relacionan las tablas con los marcos de datos.

?xtabs(no es necesariamente la ubicación más obvia).deparse.level = 0(o posiblemente 2) en la llamada atableRespuestas:
Ya lo descubrí:
hace lo que necesito: aparentemente, la tabla debe convertirse de alguna manera en una matriz para traducirla adecuadamente en un marco de datos. Encontré más detalles sobre esta función as.data.frame.matrix () para tablas de contingencia en el blog Computational Ecology .
fuente
as.data.frame(mytable). (is.matrix(mytable)revelará que las tablas realmente son solo matrices disfrazadas, yas.data.frame.matrixes el método que se despacha cuandoas.data.frame()se pasa un argumento de matriz.)as.data.frame.tableque se está enviando, en lugar de ser menos específicoas.data.frame.matrix.row.names. He logrado agregar una columna usando losrow.namesvalores, pero prefiero evitaras.data.frame.matrixescribirrow.namesen primer lugar ...as.data.frame.matrix(table(x))me daError in seq_len(ncols) : argument must be coercible to non-negative integer, mientrasas.data.frame(table(x))trabaja, dondexsolo hay un vector numéricoc(1,2,...)Si bien los resultados varían en este caso porque los nombres de las columnas son números, otra forma que he usado es
data.frame(rbind(mytable)). Usando el ejemplo de @XX:Si los nombres de las columnas no comienzan con números,
Xno se agregarán al frente de ellos.fuente
Respuesta corta: usando
as.data.frame.matrix(mytable), como sugirió @Victor Van Hee.Respuesta larga:
as.data.frame(mytable)puede que no funcione en tablas de contingencia generadas portable()función, incluso si seis.matrix(your_table)devuelveTRUE. Seguirá derritiendo su tabla en elfactor1 factor2 factori countsformato.Ejemplo:
fuente
Si está usando el tidyverse , puede usar
para obtener un tibble (es decir, un marco de datos con algunas variaciones menores de la clase base)
fuente
Esto es depricate
as.data.frame (mytable)
En su lugar use esto
biblioteca ("quanteda")
convertir (mytable, to = "data.frame")
fuente
convertno es parte de la distribución normal de R. Tengocould not find function "convert"¿Qué biblioteca necesitas para esto?