假设,你有一个这样的data.frame:

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

如何只选择x中的数字列呢?


当前回答

library(purrr)
x <- x %>% keep(is.numeric)

其他回答

如果你只对列名感兴趣,那么使用这个:

names(dplyr::select_if(train,is.numeric))
Numerical_variables <- which(sapply(df, is.numeric))
# then extract column names 
Names <- names(Numerical_variables)

PCAmixdata库有一个splitmix函数,它可以对给定的数据框架“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)

另一种方法可能如下:-

#extracting numeric columns from iris datset
(iris[sapply(iris, is.numeric)])

如果你有很多因子变量,你可以使用select_if函数。 安装dplyr包。有许多函数通过满足一个条件来分离数据。你可以设置条件。

像这样使用。

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