Программирование 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)