R: Используйте правильно применять - PullRequest
0 голосов
/ 07 мая 2018

Я хотел бы создать простой код для объединения столбцов и подсчета количества переменных категории в моем фрейме данных. Мои проблемы, когда я использую apply, я получаю правильный результат, но пять раз.

Пример:

a <- c('car','bike',NA,'moto','skate')
b <- c(NA,'car',NA,NA,'bike')
c <- c('car',NA,NA,'skate',NA)
d <- c('moto','skate',NA,'car',NA)

data <- data.frame(a,b,c,d)

затем, используя apply:

x <- vector('list',length = NCOL(data)*NROW(data))
one_column <- apply(data,1,function(y){
  x <- rbind(y,x)
  return(x)
})

Затем unlist и используйте table для подсчета количества категориальных переменных, которые у меня есть в моих данных:

one_column <- unlist(one_column)
table(one_column)

Но для получения правильного результата мне нужно поделить на 5:

table(one_column)/5

1 Ответ

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

Вектор x, который вы создали, в 5 раз больше, чем каждый столбец, поэтому он перерабатывает данные. То, что вы хотите, это вместо этого.

x <- vector('list',length = NCOL(data))

Или, как говорит emilliman5, просто используйте table(unlist(data)).

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