假设,你有一个这样的data.frame:
x <- data.frame(v1=1:20,v2=1:20,v3=1:20,v4=letters[1:20])
如何只选择x中的数字列呢?
假设,你有一个这样的data.frame:
x <- data.frame(v1=1:20,v2=1:20,v3=1:20,v4=letters[1:20])
如何只选择x中的数字列呢?
当前回答
iris %>% dplyr::select(where(is.numeric)) #as per most recent updates
purrr的另一个选项是否定丢弃函数:
iris %>% purrr::discard(~!is.numeric(.))
如果你想要数值列的名称,你可以添加名称或冒号:
iris %>% purrr::discard(~!is.numeric(.)) %>% names
其他回答
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)
如果你有很多因子变量,你可以使用select_if函数。 安装dplyr包。有许多函数通过满足一个条件来分离数据。你可以设置条件。
像这样使用。
categorical<-select_if(df,is.factor)
str(categorical)
另一种方法可能如下:-
#extracting numeric columns from iris datset
(iris[sapply(iris, is.numeric)])
library(purrr)
x <- x %>% keep(is.numeric)
这并不能直接回答问题,但非常有用,特别是当你想要除id列和因变量外的所有数字列时。
numeric_cols <- sapply(dataframe, is.numeric) %>% which %>%
names %>% setdiff(., c("id_variable", "dep_var"))
dataframe %<>% dplyr::mutate_at(numeric_cols, function(x) your_function(x))