2015-12-01 2 views
2

У меня был бы кадр данных авторов в гораздо большем наборе данных, чем в примере в R, который я хотел бы получить лучше описать. Я знаю (вроде), как получить maxsum, но Как я могу получить максимальное резюме уникальных авторов ЗА ИСКЛЮЧЕНИЕМ для двух наиболее распространенных авторов?Как бы я мог определить новый maxsum?Как я могу получить фактическое резюме, что новый maxsum будет 3 вместо его вывода?Условное резюме в R: MaxSum

В основном я ищу условный способ обобщения моих данных. Может ли кто-нибудь помочь мне в этом отделе?

dat <- data.frame(author=c("a", "b", "c", "d", "a", "b", "c", "d", "e", "a", "a", "a","a", "a", "c","c","c","c"),Post=c("one", "one", "one", "one", "one", "one", "one", "one", "one", "one","one", "one","one", "one","one", "one","one", "one")) 
authors <-dat[,1] 
author_vec <- (authors) 
length(unique(author_vec)) #5 
ex_s <- summary(as.factor(neg.author_vec),maxsum=5) 

ответ

1

Вот подход с использованием библиотеки plyr:

require(plyr) 
temp <- ddply(dat, ~author, summarise, sum=length(author)) 
temp <- temp[order(-temp$sum), ][3:nrow(temp), ] 

> temp 
    author sum 
2  b 2 
4  d 2 
5  e 1 

авторы сообщения a и c были удалены, так как они были два наиболее часто появляющихся автора в наборе данных.

+0

Как я могу получить общую сумму 'temp $ sum'? – Robert

+0

Ничего. 'sum (temp $ sum)' – Robert

+0

Upvote придет на вас приятель :-) –

0

Это было не ясно, сколько вы ожидали после исключения верхней 2. Это предполагает, что вы хотели следующие три частот (так как вы сказали, что вы поняли, как maxsum действует). Если вы хотите следующий пять, затем добавить два к текущей maxsum ::

ex_s <- sort(summary(author_vec,maxsum=5), decreasing=TRUE)[-(1:2)] 
ex_s 
#------ 
b d e 
2 2 1 
+0

Как я могу получить фактическое резюме, что новая максимальная сумма будет 3 вместо ее вывода? – Robert

+0

Ничего. Это будет 'length (unique (ex_s))' – Robert