Как мне преобразовать результаты опроса :: syvratio в фрейм данных? - PullRequest
0 голосов
/ 05 февраля 2020

Я вычислил rat ios для нескольких переменных, используя svyratio, но он не позволяет мне преобразовать возвращаемое значение в фрейм данных. Используя DF1 <- as.data.table (loc_ratio), он выдает ошибку </p>

"Ошибка в as.data.frame.default (x [[i]], необязательно = TRUE, stringsAsFactors = stringsAsFactors): невозможно привести класс 'svyratio' к data.frame "

1 Ответ

1 голос
/ 05 февраля 2020

Практически нет метода по умолчанию для as.data.frame. То, что есть только предупреждение, которое вы видите:

as.data.frame.default  
#====== console output=====
function (x, ...) 
stop(gettextf("cannot coerce class %s to a data.frame", sQuote(deparse(class(x))[1L])), 
    domain = NA)
<bytecode: 0x55e6ce5e1ff0>
<environment: namespace:base>

Так что, если автор пакета :: survey не написал метод as, вы увидите это сообщение. Если вы точно знаете, что содержимое вашего значения svyratio должно быть списком из двух элементов, вы можете попробовать добавить список к атрибуту класса objects. x -объект был построен с использованием первого примера на странице справки ?svyratio.

class(x) <- list("svyratio", "list")
> as.data.frame(x)
        arrests    arrests.1
alive 0.1535064 5.770992e-05

В этом случае объект svyratio представлял собой список из двух матриц, но так как они имели только один элемент каждый Принуждение продолжалось:

> str(x)
List of 2
 $ ratio: num [1, 1] 0.154
  ..- attr(*, "dimnames")=List of 2
  .. ..$ : chr "alive"
  .. ..$ : chr "arrests"
 $ var  : num [1, 1] 5.77e-05
  ..- attr(*, "dimnames")=List of 2
  .. ..$ : chr "alive"
  .. ..$ : chr "arrests"
 - attr(*, "call")= language svyratio.survey.design2(~alive, ~arrests, design = scddes)
 - attr(*, "class")= chr [1:2] "svyratio" "list"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...