Сгруппируйте одни и те же элементы списка и посчитайте их вхождения в R - PullRequest
0 голосов
/ 13 мая 2018

У меня есть элемент списка, скажем, например:

l = list("Android", "iPhone", "Android", "iPhone", "iPhone")

Я хочу иметь 2 вектора, которые содержат уникальные элементы списка и количество вхождений элемента списка.

a = c("Android", "iPhone")
b = c(2, 3)

Как я легко это сделаю в R? В моей ситуации у меня большие данные, поэтому я нахожу быстрое решение этой проблемы. Буду очень признателен за любую помощь.

Ответы [ 3 ]

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

Таким способом можно легко использовать функцию unlist, а затем применить table, чтобы получить частоту для каждого слова / имени:

table(unlist(l))
#Android  iPhone 
#      2       3 
0 голосов
/ 13 мая 2018

Или вы можете отменить и рассчитать частоты.Результатом является таблица, в которой вы можете получить доступ к именам и значениям

x <- table(unlist(l))

names(x)
[1] "Android" "iPhone" 

str(x)
 'table' int [1:2(1d)] 2 3
 - attr(*, "dimnames")=List of 1
  ..$ : chr [1:2] "Android" "iPhone"
0 голосов
/ 13 мая 2018

Может быть, это? Он преобразует список в вектор, затем создает таблицу и, наконец, делает таблицу data.frame.

dat <- data.frame(table(sapply(l, function(x) x)))
dat
#     Var1 Freq
#1 Android    2
#2  iPhone    3

Вы можете получить доступ к отдельным столбцам, если хотите.

...