R 将NA计算为每个变量内的一个因子
我有按组计算值频率的代码(见下文)R 将NA计算为每个变量内的一个因子,r,tidyverse,R,Tidyverse,我有按组计算值频率的代码(见下文) 感谢您的帮助 根据表包,一个选项是使用exclude=NULL library(tables) mtcars$cyl[4:7] <- NA mtcars$cyl <- factor(mtcars$cyl, exclude =NULL ) mtcars[varList] <- lapply(mtcars[varList], factor, exclude = NULL) @Len Greski我已经修改了你的答案…除了这些,还有其他的包吗f
感谢您的帮助 根据
表
包,一个选项是使用exclude=NULL
library(tables)
mtcars$cyl[4:7] <- NA
mtcars$cyl <- factor(mtcars$cyl, exclude =NULL )
mtcars[varList] <- lapply(mtcars[varList], factor, exclude = NULL)
@Len Greski我已经修改了你的答案…除了这些,还有其他的包吗fakir@akrun没有,但我添加了一个mtcars的示例!有一个
表格
功能。是我的吗?谢谢!这不完全是我的意思。在我的数据中,cyl有完整的值,但hp、disp等缺少值。因此,我需要这些变量中每个NA的计数,将更新我的示例以清楚说明这一点。@NewBee在这种情况下,您需要hp
disp
etc系数exclude=NULL
library(tables)
mtcars$cyl[4:7] <- NA
mtcars$cyl <- factor(mtcars$cyl, exclude =NULL )
varList <- 2:4
lapply(varList,function(x,df,byVar){
tabular((Factor(df[[x]],paste(colnames(df)[x])) + 1) ~ ((Factor(df[[byVar]],paste(byVar)))*((n=1) + Percent("col"))),
data= df)
},mtcars,"cyl")
#[[1]]
# cyl
# 4 6 8 NA
# cyl n Percent n Percent n Percent n Percent
# 4 11 100 0 0 0 0 0 0
# 6 0 0 5 100 0 0 0 0
# 8 0 0 0 0 12 100 0 0
# NA 0 0 0 0 0 0 4 100
# All 11 100 5 100 12 100 4 100
#[[2]]
# cyl
# 4 6 8 NA
# disp n Percent n Percent n Percent n Percent
# 71.1 1 9.091 0 0 0 0.000 0 0
# 75.7 1 9.091 0 0 0 0.000 0 0
# 78.7 1 9.091 0 0 0 0.000 0 0
# 79 1 9.091 0 0 0 0.000 0 0
# 95.1 1 9.091 0 0 0 0.000 0 0
# 108 1 9.091 0 0 0 0.000 0 0
# 120.1 1 9.091 0 0 0 0.000 0 0
# 120.3 1 9.091 0 0 0 0.000 0 0
# 121 1 9.091 0 0 0 0.000 0 0
# 140.8 1 9.091 0 0 0 0.000 0 0
# 145 0 0.000 1 20 0 0.000 0 0
# 146.7 1 9.091 0 0 0 0.000 0 0
# 160 0 0.000 2 40 0 0.000 0 0
# 167.6 0 0.000 2 40 0 0.000 0 0
# 225 0 0.000 0 0 0 0.000 1 25
# 258 0 0.000 0 0 0 0.000 1 25
# 275.8 0 0.000 0 0 3 25.000 0 0
# 301 0 0.000 0 0 1 8.333 0 0
# 304 0 0.000 0 0 1 8.333 0 0
# 318 0 0.000 0 0 1 8.333 0 0
# 350 0 0.000 0 0 1 8.333 0 0
# 351 0 0.000 0 0 1 8.333 0 0
# 360 0 0.000 0 0 0 0.000 2 50
# 400 0 0.000 0 0 1 8.333 0 0
# 440 0 0.000 0 0 1 8.333 0 0
# 460 0 0.000 0 0 1 8.333 0 0
# 472 0 0.000 0 0 1 8.333 0 0
# All 11 100.000 5 100 12 100.000 4 100
#[[3]]
# cyl
# 4 6 8 NA
# hp n Percent n Percent n Percent n Percent
# 52 1 9.091 0 0 0 0.000 0 0
# 62 1 9.091 0 0 0 0.000 0 0
# 65 1 9.091 0 0 0 0.000 0 0
# 66 2 18.182 0 0 0 0.000 0 0
# 91 1 9.091 0 0 0 0.000 0 0
# 93 1 9.091 0 0 0 0.000 0 0
# 95 1 9.091 0 0 0 0.000 0 0
# 97 1 9.091 0 0 0 0.000 0 0
# 105 0 0.000 0 0 0 0.000 1 25
# 109 1 9.091 0 0 0 0.000 0 0
# 110 0 0.000 2 40 0 0.000 1 25
# 113 1 9.091 0 0 0 0.000 0 0
# 123 0 0.000 2 40 0 0.000 0 0
# 150 0 0.000 0 0 2 16.667 0 0
# 175 0 0.000 1 20 1 8.333 1 25
# 180 0 0.000 0 0 3 25.000 0 0
# 205 0 0.000 0 0 1 8.333 0 0
# 215 0 0.000 0 0 1 8.333 0 0
# 230 0 0.000 0 0 1 8.333 0 0
# 245 0 0.000 0 0 1 8.333 1 25
# 264 0 0.000 0 0 1 8.333 0 0
# 335 0 0.000 0 0 1 8.333 0 0
# All 11 100.000 5 100 12 100.000 4 100
mtcars[varList] <- lapply(mtcars[varList], factor, exclude = NULL)