在大型数据集中,确定哪些变量是分类的,哪些变量是数字的

时间:2014-05-28 09:12:11

标签: r

我有一个包含65个变量的列表,我希望将数字和分类变量列表分开。

可以为此任务提供什么命令。

2 个答案:

答案 0 :(得分:7)

您可以将splitsapply一起使用来将变量组合在一起:

split(names(iris),sapply(iris, function(x) paste(class(x), collapse=" ")))
$factor
[1] "Species"

$numeric
[1] "Sepal.Length" "Sepal.Width"  "Petal.Length" "Petal.Width"

请注意使用paste将任何多类对象的类名折叠在一起。

答案 1 :(得分:5)

您可以这样做(假设您的data.frame名为df):

sapply(df, class)

实际上,带有时间变量的输出不太漂亮:

library(lubridate)
df <- data.frame(V1 = character(10),
                 V2 = numeric(10),
                 V3 = ymd(paste("2014-05", 21:30, sep="-")))
sapply(df, class)
##$V1
##[1] "factor"
##
##$V2
##[1] "numeric"
##
##$V3
##[1] "POSIXct" "POSIXt" 

但它仍然可以识别数字或因子变量,如果没有时间变量:

names(df)[sapply(df, class) == "factor"]
##[1] "V1"

# for time variable it's less obvious indeed...
names(df)[grepl("POSIXct", sapply(df, class))]
##[1] "V3"