R 中“freq”命令的标签出现问题

问题描述 投票:0回答:1

所以我的一般问题是我想分析一个名为“eseg”的名义变量 - 它表示社会经济地位。我想使用“summarytools”包中的“freq”命令。然而,问题是变量 eseg 仅名义上由标签缩放,因此在表格输出中它们显示数字而不是标签。

我的问题是,尽管有帮助功能,我无法使已存储在数据集中的标签可见

为了自己解决这个问题,我尝试使用help命令并找到了一些可能帮助我解决问题的选项。 不幸的是,这些选项没有帮助,标签仍然不可见。 目前的代码如下所示:

freq(df_work$eseg, headings = st_options("headings"), 
     display.labels = st_options("display.labels"))

可以简化解决方案的快速添加: 变量已经被标记并且命令运行(没有标签)顺利 - 即使选项不会生成错误消息,但输出也不会改变

有人可以进一步帮助我吗?

(如果有人找到了一种以不同方式生成带有标签的表格的方法,我也将不胜感激新的解决问题的方法)

r summarytools
1个回答
0
投票

从您的帖子中可以看出,您已使用 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
© www.soinside.com 2019 - 2024. All rights reserved.