我有一个名为"保险"的数据框,包含数字和因子变量.如何选择所有因子变量以便检查分类变量的级别?
我试图sapply(insurance,class)获取所有变量的类.但是后来我不能根据class(var)="factor"变量名称是否也包含在结果中来进行逻辑论证sapply().
谢谢,
flo*_*del 15
一些数据:
insurance <- data.frame(
int = 1:5,
fact1 = letters[1:5],
fact2 = factor(1:5),
fact3 = LETTERS[3:7]
)
Run Code Online (Sandbox Code Playgroud)
我会sapply像你一样使用,但结合使用is.factor返回一个逻辑向量:
is.fact <- sapply(insurance, is.factor)
# int fact1 fact2 fact3
# FALSE TRUE TRUE TRUE
Run Code Online (Sandbox Code Playgroud)
然后使用[提取这些列:
factors.df <- insurance[, is.fact]
# fact1 fact2 fact3
# 1 a 1 C
# 2 b 2 D
# 3 c 3 E
# 4 d 4 F
# 5 e 5 G
Run Code Online (Sandbox Code Playgroud)
最后,要获得级别,请使用lapply:
lapply(factors.df, levels)
# $fact1
# [1] "a" "b" "c" "d" "e"
#
# $fact2
# [1] "1" "2" "3" "4" "5"
#
# $fact3
# [1] "C" "D" "E" "F" "G"
Run Code Online (Sandbox Code Playgroud)
您可能还会发现str(insurance)有趣的简短摘要.