R尝试获取因子变量的频率输出,但仅针对存在的值,而不是所有存在的因子标签

R尝试获取因子变量的频率输出,但仅针对存在的值,而不是所有存在的因子标签,r,R,因此,在SAS中,当您运行proc freq时,输出仅显示数据中的值,而不是该格式中可用的所有格式,以及哪些有数据,哪些没有数据 我有很多变量是factor,我需要在上面运行freqs,但是由于factor,我得到了很多0。我一直在使用summarytools freq,并尝试在谷歌上搜索其他freq选项,但没有任何东西能满足我的需求 我所拥有的: Freq % Valid % Valid Cum. %

因此,在SAS中,当您运行proc freq时,输出仅显示数据中的值,而不是该格式中可用的所有格式,以及哪些有数据,哪些没有数据

我有很多变量是factor,我需要在上面运行freqs,但是由于factor,我得到了很多0。我一直在使用summarytools freq,并尝试在谷歌上搜索其他freq选项,但没有任何东西能满足我的需求

我所拥有的:

                                        Freq   % Valid   % Valid Cum.   % Total   % Total Cum.
------------------------------------- ------ --------- -------------- --------- --------------
                                 MPLP      0      0.00           0.00      0.00           0.00
                                 MIRC      0      0.00           0.00      0.00           0.00
                   Family Law Project      0      0.00           0.00      0.00           0.00
                            Washtenaw      0      0.00           0.00      0.00           0.00
                               Monroe      0      0.00           0.00      0.00           0.00
                              Jackson      0      0.00           0.00      0.00           0.00
                              Lansing      5      1.94           1.94      1.47           1.47
                          ATJ-Lansing      0      0.00           1.94      0.00           1.47
我想要的是:

                                        Freq   % Valid   % Valid Cum.   % Total   % Total Cum.
------------------------------------- ------ --------- -------------- --------- --------------
                              Lansing      5      1.94           1.94      1.47           1.47
R中是否有频率选项只显示具有实际值的因子

在这一点上,将变量从因子更改为其他变量不是一个选项。因此,它必须对特定的因素进行研究


谢谢

所以您的问题是R继承了以前的数据集或以前的突变(即您所做的更改)的级别。这意味着您将为该因子保留一些空标签/级别。对于您的分析,您希望删除这些空标签。 这可以通过多种方式实现

1。分别为每个变量执行此操作 以R为基数的是:

df$factor1 <- as.character(droplevels(df$factor1))
df$factor2 <- as.character(droplevels(df$factor2))
然而,如果你有多个因素,你将不得不做大量的打字

2。同时针对所有因素执行此操作

使用“dplyr”包最容易做到这一点

library(dplyr)
df <- df %>% mutate_if(is.factor, ~as.character(droplevels(.)))
库(dplyr)
如果(is.factor,~as.character(droplevels(.)),df%变异
使用mutate_if语句选择属于类is.factor的所有变量,然后对其应用特定函数。在这里,我选择让它成为一个角色,但如果你想让它成为一个因素,这也是可能的。然后使用
~液位(液滴(.))


关于你的好奇心问题,我想我解释得再好不过了。这里解释了如何创建具有级别的因子。

您能否在R中共享您的数据样本,以便我们可以使用它更好地理解您的问题以及如何帮助您?谢谢(建议
dput(数据)
)如果您想对因素进行任何分析,R会考虑所有级别。因此,如果您不希望这样做,例如,当数据中不再存在某个级别时,只需对因子进行变异,使其成为普通字符或数字变量。不存在的等级将被删除。@Annet你说的变异是什么意思?我只在R中工作了大约2个月,它都是自学的。只要转换它,就像你可以将数字转换为字符等。我不知道你的因子名称是什么,但在R基中它将是df$factor@Annet谢谢!成功了。所以,基本上,它不能在因子变量上完成,我必须将所有因子变量重新编码为其他变量?
library(dplyr)
df <- df %>% mutate_if(is.factor, ~as.character(droplevels(.)))