仅从数据框中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]