所以我的一般问题是我想分析一个名为“eseg”的名义变量 - 它表示社会经济地位。我想使用“summarytools”包中的“freq”命令。然而,问题是变量 eseg 仅名义上由标签缩放,因此在表格输出中它们显示数字而不是标签。
我的问题是,尽管有帮助功能,我无法使已存储在数据集中的标签可见
为了自己解决这个问题,我尝试使用help命令并找到了一些可能帮助我解决问题的选项。 不幸的是,这些选项没有帮助,标签仍然不可见。 目前的代码如下所示:
freq(df_work$eseg, headings = st_options("headings"),
display.labels = st_options("display.labels"))
可以简化解决方案的快速添加: 变量已经被标记并且命令运行(没有标签)顺利 - 即使选项不会生成错误消息,但输出也不会改变
有人可以进一步帮助我吗?
(如果有人找到了一种以不同方式生成带有标签的表格的方法,我也将不胜感激新的解决问题的方法)
从您的帖子中可以看出,您已使用 haven 包导入了数据,并且您的
eseg
变量是带标签的数字变量。 display.labels
函数的 freq
参数适用于变量(或数据框)标签,而不是因子变量的 levels(或数值变量的标签属性)。因此,您需要将 eseg
变量转换为因子才能查看其水平。
示例:
library(haven)
path <- system.file("examples", "iris.sav", package = "haven")
iris2 <- read_sav(path)
class(iris2$Species)
#[1] "haven_labelled" "vctrs_vctr" "double"
(Species.labels <- attributes(iris2$Species)$labels
#setosa versicolor virginica
# 1 2 3
iris2$Species <- factor(iris2$Species,
levels=Species.labels,
labels=names(Species.labels))
freq(iris2$Species)
Frequencies
iris2$Species
Type: Factor
Freq % Valid % Valid Cum. % Total % Total Cum.
---------------- ------ --------- -------------- --------- --------------
setosa 50 33.33 33.33 33.33 33.33
versicolor 50 33.33 66.67 33.33 66.67
virginica 50 33.33 100.00 33.33 100.00
<NA> 0 0.00 100.00
Total 150 100.00 100.00 100.00 100.00