R的多数投票

时间:2016-10-17 22:29:47

标签: r

我有一个数据框,我想用一个因子计算多数投票,例如

graph_tasks = { 1: [2, 11], 2: [3], 3: [], 11: [12], 12: [13], 13: [] }

输出应为

 item   category
 1      2
 1      3
 1      2
 1      2
 2      2
 2      3
 2      1
 2      1

您可能会识别来自here的示例数据,但我不想要模式,我想获得实际的多数投票(意味着超过1/2的人选择了该选项)。因此,“第2项”应该没有多数。

item majority_vote 1 2 2 NA 似乎没有帮助我,因为table()只会给我模态值。我需要知道3件事,我拥有的票数,该选项的名称,以及某人投票选项的次数。我可以得到前两个 which.max()tapply(all_results_filtered$q1, all_results_filtered$X_row_id ,function(x) length(x)),但如何获得tapply(all_results_filtered$q1, all_results_filtered$X_row_id ,function(x) as.numeric(names(which.max(table(x)))))

的投票数量

或者...有一些我想念的简单方法吗? 谢谢!

1 个答案:

答案 0 :(得分:1)

以下是dplyr选项:

library(dplyr)
df %>% 
      group_by(item, category) %>% 
      mutate(votes = n()) %>% 
      group_by(item) %>% 
      summarise(majority_vote = category[votes > n()/2][1])

# A tibble: 2 x 2
#   item majority_vote
#  <int>         <int>
#1     1             2
#2     2            NA