R中5个排名的频率计数

R中5个排名的频率计数,r,frequency,ranking,R,Frequency,Ranking,假设我在一份问卷中有5个项目A、B、C、D、E,让受访者对它们进行排名。数据是这样的, > df rank1 rank2 rank3 rank4 rank5 1 A B C D E 2 A C B D E 3 C A B E D 4 B A C D E 5 A B D C E ite

假设我在一份问卷中有5个项目
A、B、C、D、E
,让受访者对它们进行排名。数据是这样的,

> df
  rank1 rank2 rank3 rank4 rank5
1     A     B     C     D     E
2     A     C     B     D     E
3     C     A     B     E     D
4     B     A     C     D     E
5     A     B     D     C     E
  item rank1 rank2 rank3 rank4 rank5
1    A     3     2     0     0     0
2    B     1     2     2     0     0
3    C     1     1     2     1     0
4    D     0     0     1     3     1
5    E     0     0     0     1     4
如何按项计算每个排名的频率,以便输出如下所示

> df
  rank1 rank2 rank3 rank4 rank5
1     A     B     C     D     E
2     A     C     B     D     E
3     C     A     B     E     D
4     B     A     C     D     E
5     A     B     D     C     E
  item rank1 rank2 rank3 rank4 rank5
1    A     3     2     0     0     0
2    B     1     2     2     0     0
3    C     1     1     2     1     0
4    D     0     0     1     3     1
5    E     0     0     0     1     4

我们可以使用
base R

lvls <- sort(unique(unlist(df)))
sapply(df, function(x) table(factor(x, levels =lvls)))
#   rank1 rank2 rank3 rank4 rank5
#A     3     2     0     0     0
#B     1     2     2     0     0
#C     1     1     2     1     0
#D     0     0     1     3     1
#E     0     0     0     1     4

或者使用
qdapTools

library(qdapTools)
t(mtabulate(df))
数据
df整洁的方法

下面是一种解决函数问题的方法


library(tidyr)
图书馆(dplyr)
您的_数据%
聚集(键=排名\编号,值=排名)%>%
计数(秩数,秩)%>%
排列(键=排列号,值=n,填充=0)
#>#tibble:5 x 6
#>等级1级2级3级4级5级
#> *      
#>1 A 3。2.000
#>2 B 1。2.2.00
#>3 C 1。1.2.1.0
#>4d0。01.3.1.
#>5 E 0。001.4.