仅从数据框中select数字列

假设你有这样的data.frame:

x <- data.frame(v1=1:20,v2=1:20,v3=1:20,v4=letters[1:20]) 

你将如何select只有那些是数字的x列?

由于数据框是一个列表,我们可以使用list-apply函数:

 nums <- sapply(x, is.numeric) 

然后标准子集

 x[ , nums] 

dplyr包的select_if( )函数是一个select_if(的解决scheme:

 library("dplyr") select_if(x, is.numeric) 

基本包中的Filter()是这个用例的完美函数:你只需要编码:

 Filter(is.numeric, x) 

如果你有很多因子variables,你可以使用select_if函数。 安装dplyr软件包。 有许多function通过满足条件来分隔数据。 你可以设置条件。

像这样使用。

 categorical<-select_if(df,is.factor) str(categorical) 

库PCAmixdata具有functon拆分混合function,可将给定dataframe“YourDataframe”的定量(数值数据)和定性(分类数据)分割为如下所示:

 install.packages("PCAmixdata") library(PCAmixdata) split <- splitmix(YourDataframe) X1 <- split$X.quanti(Gives numerical columns in the dataset) X2 <- split$X.quali (Gives categorical columns in the dataset) 

这是其他答案的替代代码:

 x[, sapply(x, class) == "numeric"] 

data.table

 x[, lapply(x, is.numeric) == TRUE, with = FALSE]