我有一个数据集,以9pt的比例对Likert项目做出回应.我想创建数据的频率表(和条形图),但是我的数据集中的某些值永远不会出现,因此table()从频率表中删除该值.我想用它来表示频率为的值0.也就是说,给定以下数据集
# Assume a 5pt Likert scale for ease of example
data <- c(1, 1, 2, 1, 4, 4, 5)
Run Code Online (Sandbox Code Playgroud)
我想获得以下频率表,而无需手动插入3以该值命名的列0.
1 2 3 4 5
3 1 0 2 1
Run Code Online (Sandbox Code Playgroud)
我是新手R,所以也许我忽略了一些基本的东西,但我没有遇到能够提供所需结果的功能或选项.
Tho*_*asH 21
编辑:
tabular产生频率表,同时table产生列联表.然而,为了在一维列联表中获得零频率,如上例所示,当然,下面的代码仍然有效.
这个问题提供了缺失的环节.通过将Likert项目转换为因子并明确指定级别,0仍然计算具有频率的级别
data <- factor(data, levels = c(1:5))
table(data)
Run Code Online (Sandbox Code Playgroud)
产生所需的输出
table生成列联表,同时tabular生成包含零计数的频率表.
tabulate(data)
# [1] 3 1 0 2 1
Run Code Online (Sandbox Code Playgroud)
另一种方式(如果你有从1开始的整数 - 但是对于其他情况很容易修改):
setNames(tabulate(data), 1:max(data)) # to make the output easier to read
# 1 2 3 4 5
# 3 1 0 2 1
Run Code Online (Sandbox Code Playgroud)