R中5个排名的频率计数
假设我在一份问卷中有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
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.