У меня есть таблица в R, которая имеет str()
это:
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
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
Я хочу избавиться от x
и y
и преобразовать его во фрейм данных, который выглядит точно так же, как указано выше (три строки, четыре столбца), но без x
или y
. Если я использую as.data.frame(mytable)
, вместо этого я получаю это:
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
Я, наверное, принципиально не понимаю, как таблицы связаны с фреймами данных.
?xtabs
(но это не обязательно самое очевидное место.)deparse.level = 0
(или, возможно, 2) в вызовеtable
Ответы:
Я понял это уже:
делает то, что мне нужно - очевидно, таблицу необходимо каким-то образом преобразовать в матрицу, чтобы соответствующим образом преобразовать в фрейм данных. Я нашел более подробную информацию об этой функции as.data.frame.matrix () для таблиц сопряженности в блоге по вычислительной экологии .
источник
as.data.frame(mytable)
. (is.matrix(mytable)
покажет, что таблицы на самом деле просто наряженные матрицы, иas.data.frame.matrix
это метод, который отправляется, когдаas.data.frame()
передается аргумент матрицы.)as.data.frame.table
это отправляется, а не менее конкретныеas.data.frame.matrix
.row.names
. Мне удалось добавить столбец, используяrow.names
значения, но я скорее запрещаюas.data.frame.matrix
писатьrow.names
в первую очередь ..as.data.frame.matrix(table(x))
дает мнеError in seq_len(ncols) : argument must be coercible to non-negative integer
, покаas.data.frame(table(x))
работает, гдеx
просто числовой векторc(1,2,...)
Хотя в этом случае результаты различаются, поскольку имена столбцов являются числами, я использовал другой способ
data.frame(rbind(mytable))
. Используя пример из @XX:Если имена столбцов не начинаются с цифр,
X
они не будут добавлены перед ними.источник
Краткий ответ: используя
as.data.frame.matrix(mytable)
, как предложил @Victor Van Hee.Длинный ответ:
as.data.frame(mytable)
может не работать с таблицами сопряженности, сгенерированнымиtable()
функцией, даже еслиis.matrix(your_table)
возвращаетсяTRUE
. Это все еще растопит ваш стол вfactor1 factor2 factori counts
формате.Пример:
источник
Если вы используете Tidyverse , вы можете использовать
получить тиббл (т. е. фрейм данных с некоторыми незначительными отклонениями от базового класса)
источник
Это dericate
as.data.frame (туЬаЫе)
Вместо этого используйте это
библиотека ( "quanteda")
конвертировать (mytable, to = "data.frame")
источник
convert
не является частью нормального распределения R. У меняcould not find function "convert"
какая библиотека тебе для этого нужна?