Программирование R - Необходимо рассчитать до трех наиболее распространенных значений атрибута в отсортированном порядке

У меня есть колонка

Yes_No
-------
No
No
Yes
Yes
Yes
No
No
Yes
Yes
No
No
No
Yes

Тогда вывод должен быть

MCV
----------
No(7) Yes(6)

Если данные

Yes_No
-------
No
No
Yes
Yes
Yes
MayBe
No
Yes
Yes
No
MayBe
No
Yes

затем

MCV
--------
Yes(6) No(5) Maybe(2)

2 ответа

Решение

Так что, как вы можете видеть, отсутствие воспроизводимого примера может вызвать на вас гончих. Тем не менее, я чувствую, что ваша проблема была хорошо описана, если не была хорошо исследована, и поэтому заслуживает ответа (если не слишком много времени). В этом случае есть некоторые основные функции манипулирования данными, с которыми вам придется ознакомиться. catФункция позволит вам вернуть текстовый отчет с результатами. Вот пример:

# make data
df <- data.frame(Yes_No = sample(c("Yes", "No"), 10, replace=TRUE))
df

# convert "Yes_No" to factor
df$Yes_No <- factor(df$Yes_No, levels=c("Yes", "No", "Maybe"))

# summary
summary(df)

# or aggregate
res <- aggregate(df, by=list(df$Yes_No), FUN=length)
res
cat(" MCV\n", "--------------\n", paste(res[,1], " (", res[,2], ")", sep="", collapse=" "))

# MCV
# --------------
# Yes (7) No (3)

##### ALT w/ "Maybe" ###
df <- data.frame(Yes_No = sample(c("Yes", "No", "Maybe"), 20, replace=TRUE))
df$Yes_No <- factor(df$Yes_No, levels=c("Yes", "No", "Maybe"))
res <- aggregate(df, by=list(df$Yes_No), FUN=length)
res
cat(" MCV\n", "--------------\n", paste(res[,1], " (", res[,2], ")", sep="", collapse=" "))
# MCV
# --------------
# Yes (9) No (6) Maybe (5)

Попробуйте создать таблицу.

table(dataframe$columnname)
Другие вопросы по тегам