Как я могу вернуть NA, если нет наиболее распространенной строки, и сохранить наиболее распространенную строку (если существует) в отдельном столбце? - PullRequest
0 голосов
/ 24 сентября 2018

Вот пример моих данных:

v1 <- c("Friday", "Wednesday")
v2 <- c("Sunday", "Monday", "Sunday", "Friday")
mylist <- list(v1, v2)

Для [[1]] должно возвращаться что-то вроде NA.Для [[2]] должно возвращаться воскресенье

Я пытался использовать пакет tm R:

termFreq(mylist[[2]])

, который возвращает таблицу частот.Я хочу извлечь элемент с максимальной частотой и сохранить его в другом столбце.В случае, когда нет максимума (например, в [[1]], я хочу вернуть NA.

Любая помощь будет принята!

1 Ответ

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

Мы создаем функцию Mode и затем применяем ее к элементам list

Mode <- function(x) {
 ux <- unique(x)
 count = tabulate(match(x, ux))
  if(length(unique(count)) == 1) {
   NA
 } else ux[which.max(count)]
}

lapply(mylist, Mode)
#[[1]]
#[1] NA

#[[2]]
#[1] "Sunday"
...