Как преобразовать результат табличной функции в фрейм данных - PullRequest
0 голосов
/ 15 сентября 2018
df = data.frame(table(train$department , train$outcome)) 

Здесь отдел и результат оба являются факторами, поэтому он дает мне фрейм данных, который выглядит как на данном изображении

is_outcome является двоичным, а df выглядит так

содержит только 2 переменные (поля), в то время как я хочу, чтобы этот столбец отдела был частью данных, т. Е. Данных из 3 переменных

                         0    1 
Analytics             4840  512
Finance               2330  206 
HR                    2282  136 
Legal                  986   53 
Operations           10325 1023
Procurement           6450  688
R&D                    930   69
Sales & Marketing    15627 1213 
Technology            6370  768 

Один из способов, которым я научился, был ...

df = data.frame(table(train$department , train$is_outcome))
write.csv(df,"df.csv")
rm(df)
df = read.csv("df.csv")
colnames(df) = c("department", "outcome_0","outcome_1")

но я не могу сохранить файл каждый раз в моей программе

есть ли способ сделать это напрямую.

1 Ответ

0 голосов
/ 15 сентября 2018

Когда вы пытаетесь создать таблицы из матрицы в R, вы в конечном итоге получите trial.table.Объект trial.table выглядит точно так же, как матричная пробная версия, но на самом деле это не так.Разница становится очевидной, когда вы преобразуете эти объекты во фрейм данных.Посмотрите на результат этого кода:

   > trial.df <- as.data.frame(trial)
    > str(trial.df)
  ‘data.frame’: 2 obs. of 2 variables:
   $ sick  : num 34 11
    $ healthy: num 9 32

Здесь вы получите кадр данных с двумя переменными (больными и здоровыми) с каждым из двух наблюдений.С другой стороны, если вы преобразуете таблицу во фрейм данных, вы получите следующий результат:

  > trial.table.df <- as.data.frame(trial.table)
    > str(trial.table.df)
   ‘data.frame’: 4 obs. of 3 variables:
    $ Var1: Factor w/ 2 levels “risk”,”no_risk”: 1 2 1 2
    $ Var2: Factor w/ 2 levels “sick”,”healthy”: 1 1 2 2
     $ Freq: num 34 11 9 32

Функция as.data.frame () преобразует таблицу в фрейм данных в формате, которыйвам нужно для регрессионного анализа данных подсчета.Если вам нужно сначала суммировать счет, вы используете table () для создания нужной таблицы.

Теперь вы получаете фрейм данных с тремя переменными.Первые два - Var1 и Var2 - это факторные переменные, для которых уровни являются значениями строк и столбцов таблицы соответственно.Третья переменная - Freq - содержит частоты для каждой комбинации уровней в первых двух переменных.

Фактически, вы также можете создавать таблицы в более чем двух измерениях, добавляя больше переменных в качестве аргументов или преобразовываямногомерный массив к таблице с использованием as.table ().Вы можете обращаться к числам так же, как и к многомерным массивам, а функция as.data.frame () создает столько факторных переменных, сколько имеется измерений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...