2015-05-22 2 views
-2

У меня есть кадр данных переменных, некоторые из них встречаются более одного раза, например: a, b, b, b, c, c, d, e, f Я хотел бы получить вывода (в двух столбцах) следующим образом: a 1; b 3; c 2; d 1; e 1; f 1. Бонусный вопрос: я бы хотел, чтобы переменная называлась чем-то (например, «другое», если было меньше 2 вхождений), если переменная в столбце подсчитана меньше, чем «n».Считывание числа уникальных переменных

+3

Используйте 'as.data.frame (table (yourvector))'. Если 'a',' b', 'c' - это имена повторных столбцов. Замените 'yourvector' на' colnames (yourdata) ' – akrun

+5

Бонус: укажите пример воспроизводимости. –

+2

@RichardScriven Как воспроизводимость идет, для меня это не хуже, чем в других случаях, которые я видел, например, вставки некоторых строк csv или результатов, напечатанных консолью R. @ everyone: Вопрос о бонусе - это не обман, который я знаю (?), поэтому downvotes просто из-за отсутствия форматирования кажутся немного суровыми. – Frank

ответ

5

Табулирование и свертывание

Вашего пример вектора является

vec <- letters[c(1,2,2,2,3,3,4,5,6)] 

Чтобы получить суммирование, используйте

tab <- table(vec) 

Чтобы свернуть нечастые элементы (скажем, с числом ниже два), использование

res <- c(tab[tab>=2],other=sum(tab[tab<2])) 
# b  c other 
# 3  2  4 

Отображение в двух колонках

resdf <- data.frame(count=res) 
#  count 
# b   3 
# c   2 
# other  4 

Технически, "первый столбец" здесь является строка этикетки, доступные с rownames(resdf).

Подобные варианты включают:

  • stack(res) для двух действительных столбцов
  • data.frame(count=sort(res,decreasing=TRUE)) сортировать

Во всех этих, tab или c(tab) могут быть использованы вместо res.

+1

@akrun Спасибо, что указали это; Я пропустил это. Я добавил некоторые базовые опции R, которые поражают меня как проще. – Frank

Смежные вопросы