как добавить вывод функции в Вектор в R - PullRequest
0 голосов
/ 04 мая 2018

Я вычисляю режим столбца на основе другого столбца, но не могу добавить возврат функции к вектору: getmode <- function(v) { uniqv <- unique(v) uniqv[which.max(tabulate(match(v, uniqv)))] }

Выше функции дайте мне режим столбца. Когда я вызываю функцию, я получаю вывести следующим образом:

x<-income_train$workclass[income_train$educational_num == '16']
x

Выход:

[1] Private
Levels: ? Federal-gov Local-gov Never-worked Private Self-emp-inc Self-emp-not-inc State-gov Without-pay

Теперь я хочу создать функцию, которая для каждого значения столбца Educational_num, т.е. с 1 по 16, я получаю режим для рабочего класса. Поэтому я написал код:

`z <-c()
 for (i in 1:16){
  x<-NULL
  x<-income_train$workclass[income_train$educational_num == i]
  result <- getmode(income_train$workclass)
  print(result)
  z <- c(z,result)

 }
 print(z)`

Выше код дает мне вывод, как показано ниже:

[1] Private
Levels: ? Federal-gov Local-gov Never-worked Private Self-emp-inc Self-emp-  not-inc State-gov Without-pay
[1] 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5

Я не знаю, откуда 5. Я хочу, чтобы результат содержал 16 "Private". Что доказывает, что для каждого значения столбца Educational_num Mode в режиме рабочего места столбец имеет значение «Private». Пожалуйста, помогите.

1 Ответ

0 голосов
/ 04 мая 2018

В будущем попытайтесь предоставить набор данных с dput, чтобы другим было легче понять ваши данные.

Попробуйте использовать data.table:

library(data.table)
setDT(income_train)
income_train[, getmode(workclass), educational_num]

Это фактически вызывает getmode для каждой группы в Educational_num.

Надеюсь, это работает для вас.

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